Jaką funkcję dopisać.

0

Mam problem z prostym zadaniem - mój program ma przepisywać liczby większe od zera (podane przez użytkownika) ale ma się zatrzymać gdy ktoś poda 2 razy z rzędu tą samą liczbę.

Mój kod:

#include <iostream>
using namespace std;
int main()
{
    int i;
    cin >> i;
    while (i > 0) {
        cout << i << endl;
        cin >> i; /* zmiana liczby */
    }
    return 0;
}

Co dać po drugim cin aby przerywało pętlę po podaniu tej samej liczby?

1

Musisz zapamiętać poprzednią wartość, a po wczytaniu nowej porównać ją i jeśli jest identyczna - wyjść z pętli (break).

0

Zdefiniowałem wskaźnik, który miał zapamiętać tę pierwszą zmienną, potem chciałem użyć if (i==*wskaznik) break; wewnątrz pętli, ale chyba nie tędy droga albo coś źle robię

0

A... po co ten wskaźnik? Masz zapamiętać poprzednią wartość.

0

Próbowałem dodać zmienną, przyrównałem ją do mojego i, potem po drugim cin dałem if (i == zmienna) {break;}
nic nie dało :/

0

Kod:

#include <iostream>
using namespace std;
int main()
{
	int i;
	cin >> i;
	int m = i;
	while (i > 0) {
		cout << i << endl;
		cin >> i;
		if (m == i) { break; }
	}
    return 0;
}
1

Nie aktualizujesz wartości m.

#include <iostream>
using namespace std;
int main()
{
    int i;
    cin >> i;
    int m = i;
    while (i > 0) {
        cout << i << endl;
        cin >> i;
        if (m == i) { break; }
        m = i;
    }
    return 0;
}
0

Nie rozumiem zasady działania tego

Najpierw ktoś sobie wbija jakąś liczbę (nasze i). Zapamiętujemy ją w zmiennej 'm'.
Potem konsola przepisuje tę liczbę i użytkownik podaje kolejną. Poprzednia jest zapisana w 'm'.
Więc gdy poda 'i' równe 'm' to powinno się zatrzymać, ale działa dalej.

A przy aktualizacji działa dobrze...

0

Bo w twoim kodzie m przechowuje pierwszą wpisaną liczbę. I jest to zawsze pierwsza wpisana, niezależnie ile wpiszesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1