Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pętla while i nie poprawne działanie programu

Ostatnio zmodyfikowano 2016-01-05 20:07
Autor Wiadomość
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?
C/C++
#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";
    //cout<<t;
    for( m = 0; t >= 60; m++ )
    { t = t - 60;
    };
    cout << m << "m";
    cout << t << "s";
}
P-142917
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;".
P-142921
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)
    instrukcje
instrukcje zostaną wykonane, jeśli t należy do przedziału 1-1 000 000.

Oto poprawka kodu:
C/C++
#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; // Skróciłem zapis i poprawiłem błąd.
   
    while( t >= 3600 )
    { t = t - 3600;
        g = g + 1;
    };
    cout << g << "g";
    //cout<<t;
    for( m = 0; t >= 60; m++ )
    { t = t - 60;
    };
    cout << m << "m";
    cout << t << "s";
}
P-142922
« 1 »
  Strona 1 z 1