[C++] Pętla while i nie poprawne działanie programu
Ostatnio zmodyfikowano 2016-01-05 20:07
Eryk17 Temat założony przez niniejszego użytkownika |
[C++] Pętla while i nie poprawne działanie programu » 2016-01-05 19:31:47 hej. Mam program który sprawdza ile jest godzin minut i sekund na podstawie podanej liczby (sekund -t ). Na stronie main2 wyskakują mi takie błędy: wiersz 1: wczytano '59g0m59s', a oczekiwano '0g0m59s' 1d wiersz 1: wczytano '60g1m0s', a oczekiwano '0g1m0s' co jest nie tak? #include <iostream> using namespace std;
void czas( int t ); int main() { int t; cin >> t; czas( t ); }
void czas( int t ) { int g, m, s, wynik; g, m, s = 0; while( t >= 3600 ) { t = t - 3600; g = g + 1; }; cout << g << "g"; for( m = 0; t >= 60; m++ ) { t = t - 60; }; cout << m << "m"; cout << t << "s"; }
|
|
nano-stalker |
» 2016-01-05 20:05:35 Witaj :) "g, m, s = 0;" - tym sposobem nie ustawiasz wszystkich wartości na raz, tylko dla zmiennej "s". Powinno to wyglądać miej więcej tak: "g = 0, m = 0, s = 0;". |
|
Pawlo3 |
» 2016-01-05 20:07:37 if( 1 <= t <= 1 000 000 ) |
Taka konstrukcja jest błędem. Zapis matematyczny typu 8 < 10 < 12 w if jest błędem. Popraw to tak: if( t >= 1 && t <= 1000000 ) && znaczy w ifie i . Czyli oto warunek w pseudokodzie: jeśli t jest większe lub równe 1 oraz t jest mniejsze lub równe 1000000 ... Już rozumiesz? Ja bym dla czytelności zmienił warunek na: if (t > 0 && t < 1000001) instrukcjeinstrukcje zostaną wykonane, jeśli t należy do przedziału 1-1 000 000. Oto poprawka kodu: #include <iostream> using namespace std;
int czas( unsigned int t ); int main() { unsigned int t; cin >> t; if( t > 0 && t < 1000001 ) czas( t ); }
int czas( unsigned int t ) { int g = 0, m = 0, s = 0, wynik; while( t >= 3600 ) { t = t - 3600; g = g + 1; }; cout << g << "g"; for( m = 0; t >= 60; m++ ) { t = t - 60; }; cout << m << "m"; cout << t << "s"; }
|
|
« 1 » |