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

Błąd w kodzie zegarka.

Ostatnio zmodyfikowano 2012-05-01 13:06
Autor Wiadomość
Morri
Temat założony przez niniejszego użytkownika
Błąd w kodzie zegarka.
» 2012-05-01 10:29:19
Witam dzisiaj trochę mi się nudziło wiec pomyślałem ,że napiszę zegarek. Niestety wystąpił błąd ,gdyż nie wyświetla mi czasy. Byłbym wdzięczny jeżeli wskażecie mi błąd.
C/C++
#include <iostream>
using namespace std;

int main() {
    int g;
    int m;
    int s;
   
    cout << "Podaj godzine. ";
    cin >> g;
    cout << endl;
   
    cout << "Podaj minute. ";
    cin >> m;
    cout << endl;
   
    cout << "Podaj sekunde. ";
    cin >> s;
    cout << endl;
   
   
    for( int g; g < 24; g++ ) {
        for( int m; m < 60; m++ ) {
            for( int s; s < 60; s++ ) {
                system( "clear" );
                cout << "Jest godzina " << g << ":" << m << ":" << s << endl;
                if( s == 59 ) {
                    s = 0;
                }
            }
            if( m == 59 ) {
                m = 0;
            }
        }
        if( g == 23 ) {
            g = 0;
        }
    }
   
    system( "pause" );
    return 0;
}
               
P-55714
m4tx
» 2012-05-01 11:13:11
C/C++
cout << "Jest godzina " << g << ":" << m << ":" << s << endl;
Musisz dodać 1 do każdej wartości. W programowaniu liczymy od zera, a użytkownikowi chcesz podać poprawną godzinę.

A program nie działa zapewne dlatego, bo nie czekasz sekundy po każdym wykonaniu pętli.
P-55718
Admixior
» 2012-05-01 13:06:37
ten kod posiada masakrę błędów:
1. W każdej pętli masz zasłonięcie po kolei zmienne h,m,s
C/C++
for( int g; g < 24; g++ ) {
    for( int m; m < 60; m++ ) {
        for( int s; s < 60; s++ ) {

wtedy te zmienne mają losowe wartości.

2. Gdy poprawisz je to wiedz że każda! pętla nigdy się nie skończy.
Tzn nigdy ci nie wyjdzie z pętli !nawet sekund więc minuty ci się nigdy nie zwiększą.
dlaczego? Looknij na to:
C/C++
if( s == 59 ) {
    s = 0;
}
 i na warunek tej pętli. lepiej w warunku wpisać true, a w if - break;

Dla wyglądu i prostoty aplikacji:
1. Jeżeli poprawisz kod to zostanie ci tylko w pętli for s++;,m++; i h++;
Więc wg mnie lepiej będzie zastosować pętlę while(1){// instrukcje //s++;}

//PS jeżeli nie umiesz jeszcze klas/struktur to tego poniżej nie czytaj
2. Czasami lekko denerwujące jest podawanie która jest godzina więc możesz sobie użyć funkcji GetLocalTime();
C/C++
SYSTEMTIME czas;
GetLocalTime( & czas ); //pobierasz czas na początku programu
cout << czas.wHour << ':' << czas.wMinute << ':' << czas.wSecond; //tutaj wypisuje po kolei hh:mm:ss
i zamiast na własnych zmiennych to pracować na obiektach tej struktury
:)
P-55731
« 1 »
  Strona 1 z 1