Pokaż wyniki od 1 do 2 z 2
problem zamiana czasu w C++
  1. #1
    Użytkownik
    Dołączył
    09.06.2008
    Mieszka w
    Głogów
    Posty
    12
    Wątków
    3
    Siła reputacji
    9

    Domyślnie problem zamiana czasu w C++

    Witam, mam problemik chcę napisać programik przeliczający czas na godziny i sekundy.
    Tzn chodzi mi oto, że uzytkownik podaje dane liczbe dni, godzin, minut i sekund, a pogram przelicza to na daną jednostkę w sekundach i godzinach.
    Skleciłeś coś takiego :


    Kod:
    //czas_004_test_a.cpp
    
    #include <stdio.h>
    #include <conio.h>
    
    int sekundy,minuty,godziny;
    int dni,miesiace,lata;
    
    int minuta  = 60;
    int godzina = 60;
    int dzien   = 24;
    int czas;
    
    void przelicz_na_sekundy ()
    {
        printf ("Podaj ilosc dni    : ");
        scanf ("%i",&dni);
        printf ("Podaj ilosc godzin : ");
        scanf ("%i",&godziny);
        printf ("Podaj ilosc minut  : ");
        scanf ("%i",&minuty);
        printf ("Podaj ilosc sekund : ");
        scanf ("%i",&sekundy);
        czas=24*dni+60*godziny+60*sekundy;
        printf ("czas to %i",czas);
        getch ();
    }
    
    void przelicz_na_godziny ()
    {
        printf ("Podaj ilosc dni    : ");
        scanf ("%i",&dni);
        printf ("Podaj ilosc godzin : ");
        scanf ("%i",&godziny);
        printf ("Podaj ilosc minut  : ");
        scanf ("%i",&minuty);
        printf ("Podaj ilosc sekund : ");
        scanf ("%i",&sekundy);
        czas=24*dni+60*godziny+60*sekundy;
        printf ("czas to %i",czas);
        getch ();
    }
    
    int main ()
    {
        char wybor;
        printf ("s - sekundy\n");
        printf ("g - godziny\n");
        printf ("\nwybierz opcje : ");
        scanf ("%c",&wybor);
        switch (wybor)
               {
               case 's' : przelicz_na_sekundy ();
                          break; 
               case 'S' : przelicz_na_sekundy ();
                          break;
               case 'g' : przelicz_na_godziny ();
                          break;
               case 'G' : przelicz_na_godziny ();
                          break;
               default  : printf ("BLENY WYBOR!\n");
                          getch ();
                          return (1);
               }    
    }
    proszę o pomoc, z góry dzięki
    Uwaga: To jest stary temat
    Ta dyskusja jest starsza niż 90 dni. Informacje w niej zawarte mogą już nie być aktualne

  2. #2
    Aktywny Użytkownik Awatar matek3005
    Dołączył
    19.10.2008
    Posty
    363
    Wątków
    3
    Siła reputacji
    11

    Domyślnie Odp: problem zamiana czasu w C++

    Po co Ci dwie funkcje, które wykonują dokładnie to samo? Po co mnożysz w funkcji do sekund, sekundy przez 60? Nie rozumiem w ogóle Twojego rozumowania. Jakie Ty obliczenia robisz? Skoro poniżej cytowana funkcja ma przeliczać na sekundy to po co Ty mnożysz dni przez 24? Pytasz w niej o minuty, a w obliczeniach nie wykorzystujesz minut. Co to ma być? To nie jest już wina błędnego programowania, a po prostu zaległości w matematyce
    Cytat Zamieszczone przez Tomek_B
    void przelicz_na_sekundy ()
    {
    printf ("Podaj ilosc dni : ");
    scanf ("%i",&dni);
    printf ("Podaj ilosc godzin : ");
    scanf ("%i",&godziny);
    printf ("Podaj ilosc minut : ");
    scanf ("%i",&minuty);
    printf ("Podaj ilosc sekund : ");
    scanf ("%i",&sekundy);
    czas=24*dni+60*godziny+60*sekundy;
    printf ("czas to %i",czas);
    getch ();
    }
    Po co stosujesz printf i scanf, skoro w c++ masz od tego strumienie cout i cin?
    Pokaże Ci na przykładzie tej pierwszej funkcji jak to powinno mniej więcej być zrobione.

    Pierwsza sprawa deklaracja zmiennych:
    int minuta = 60;
    int godzina = 60;
    int dzien = 24;
    to wywalasz. Nie potrzebnie deklarujesz zmienne globalne skoro ich wartości muszą się różnić dla poszczególnych funkcji. Przecież jak przeliczasz godziny na sekundy, to godzina ma 3600 sekund, a nie 60! Po co Ci zmienna lata skoro i tak nie wykorzystujesz tego w obliczeniach? Nawet się nie pytasz o te lata.
    Zadeklaruj sobie zmienne wewnątrz funkcji:
    Kod:
    void przelicz_na_sekundy ()
    {
        const int minuta  = 60, godzina = 3600,
                  dzien   = 3600 * 24;
        printf ("Podaj ilosc dni    : ");
        scanf ("%i",&dni);
        printf ("Podaj ilosc godzin : ");
        scanf ("%i",&godziny);
        printf ("Podaj ilosc minut  : ");
        scanf ("%i",&minuty);
        printf ("Podaj ilosc sekund : ");
        scanf ("%i",&sekundy);
        czas=dzien * dni+ godzina *godziny+ minuta * minuty + sekundy;
        printf ("czas to %i",czas);
        getch ();
    }
    Funkcje do przeliczania na godziny robisz analogicznie, a nawet jeszcze łatwiej bo deklarujesz sobie tylko zmienna dzień, gdyż to jest po za godzina jedyna całość. Minuta jest 1/60 godziny, a sekunda 1/3600, czyli wynik musi być liczbą rzeczywista jeśli chcesz uwzględnić sekundy i minuty. Ale z tym powinieneś sobie poradzić, i zacznij myśleć logicznie i rozumieć co piszesz to jest bardzo ważna umiejętność. Nie będę się już czepiać kodu, który jest straszny. Ale z czasem sobie to wyrobisz.
    Pozdrawiam
    Ostatnio edytowane przez matek3005 ; 18.07.2009 o 10:01

  1. Ranking tematów

Tagi dla tego wątku

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •