[C++] Powtarzanie programu z pętlą WHILE


(pozdro) #1

Witam

Napisałem krótki program na laboratoria z programowania, który oblicza wiek na podstawie podanego roku urodzenia. Program wygląda tak:

#include

#include

#include 




using namespace std;

int main()

{

   int rok, wiek;

   int exit;

   SYSTEMTIME st; 

   GetSystemTime(&st);

   int data = st.wYear;

while (rok
{ 

   cout<<"Podaj rok swoich narodzin: ";

   cin>>rok;

   wiek=data-rok;

   if (rok
   {cout<<"Masz "<
   getch();

   system("CLS");}

}

cout<<"Bledne dane, podaj jeszcze raz";


getch();   

    return 0;

    getch();

}

Wiem, wiem, prostota aż bije po oczach, ale ja tak muszę, bo programowanie to nie jest to co umiem i lubię robić :slight_smile:

W czym problem? Chciałbym, aby po wpisaniu roku większego niż zmienna data(czyli 2012) wyświetlał się komunikat o błędnych danych i żeby program wrócił do polecenia "podaj rok swoich narodzin" i wykonywał program, póki nie zamknę okna. Pewnie kwestia leży w pętli, ale nie wiem dokładnie gdzie. Prosiłbym o pomoc

Pozdrawiam


(Copycona) #2

Błędy:

1.

    return 0;    getch(); [/code] W jakim celu ta instrukcja po return? Po zwróceniu wartości funkcja kończy działanie. Nic co jest po return się nie wykona.

2. [code=php]    int exit; 
 Ta zmienna nie jest w ogóle używana.

3.     int rok, wiek;

(pozdro) #3

Akurat z getch() i int exit to nie błąd bo wcześniej próbowałem czegoś innego i nie skasowałem tego przed wklejeniem na forum.

Jeśli chodzi o resztę to wcześniej próbowałem też z else ale program kończył pracę po podaniu złych danych. A ja właśnie chce żeby powtarzał.


(Copycona) #4

Kończył pracę bo warunek kontynuacji pętli był nieprawidłowy - o tym też napisałem.

Po zastosowaniu tego co Ci opisałem:

#include

(pozdro) #5

Ok, wszystko pięknie działa. Teraz program wraca do początku przy podaniu złej daty, ale jak już się poda dobrą datę, to wyświetla wiek i kończy program. Czyli udało się zrobić jedno i popsuć drugie :slight_smile:

Myślałem też, żeby zrobić kończenie programu po naciśnięciu klawisza

+/- tak by to miało wyglądać: po podaniu roku urodzenia (nie ważne czy dobry czy zły) program pyta czy zakończyć pracę. Po wciśnięciu np. 1 program się kończy, a po wciśnięciu np. 0 program od nowa wykonuje wszystkie polecenia i tak za każdym razem po podaniu roku


([alex]) #6

int koniec; //na początku

zamiast:

} while (rokurodzin > aktualnadata);

podaj:

cout<<"koniec? ";

cin>>koniec;

} while (!koniec);


(pozdro) #7

Dzięki śliczne. Teraz wszystko śmiga, ale co najważniejsze, rozumiem gdzie zrobiłem błąd :slight_smile:

pozdrawiam