Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » c++ Stoppuhr fehler hilfe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.11.2014, 17:29 Uhr
~cashev
Gast


Guten Abend mitglieder, ich bin neu hier & hab in der SuFu nix gefunden.

ich wollte eine Stoppuhr programmieren. (ja, ich weis, es gibt genug anleitungen, aber wollte eine spezielle uhr programmieren)

meine Idee:
Aktuelle uhrzeit auslesen, Ziel uhrzeit eingeben, (am selben tag, bis max mitternacht), uhr laufen lassen.

Meine Fehler:
- wenn wir z.b. 17 Uhr haben, und ich gebe ein, das die uhr bis 18 laufen soll (60 min) tut sie aber bis 19 uhr laufen
- Wenn die uhr noch z.b. 4 std. laufen muss wird nicht 4 std angezeigt sondern 3 std. 60 min.


code (c++)

C++:
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>
#include <cstring>
#include <sstream>
#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;

int main()
{

    int sec, min, min1, min_erg, ErgMin=0, Ges_Min, HinM, std, std1, std_erg, ErgStd=0, tag, monat, jahr;
    char punkt = ',';

anfang:
    system("cls");
    time_t now = time(0);
    tm localTime;
    now = time(NULL);
    localtime_s(&localTime, &now);


    sec = (&localTime)->tm_sec;
    min = (&localTime)->tm_min;
    std = (&localTime)->tm_hour;
    tag = (&localTime)->tm_mday;
    monat = (&localTime)->tm_mon;
    jahr = (&localTime)->tm_year;

    cout << "Aktuelles Datum: \n" << tag << "." << monat + 1 << "." << jahr + 1900;

    if (min <= 9){ cout << "\n\nAktuelle Uhrzeit: \n" << std << ":0" << min << "." << sec << " Uhr"; }
    else { cout << "\n\nAktuelle Uhrzeit: \n" << std << ":" << min << "." << sec << " Uhr"; }

    cout << "\n\nbis wohin soll die stoppuhr laufen (max. mitternacht)?";
    cout << "\n\nstd und min (z.b. 23,59): ";
    cin >> std1 >>punkt>> min1;
    if ((std1 < 0 || std1 >= 24)||std1<std ){ goto anfang; }

    if ((min1 < 0 || min1 >= 60)||((min1<min)&&std1<=std)) { goto anfang; }
    if (min1 == 0 && std1 == 0){ goto anfang;}


    std_erg = std1-std;
    min_erg = min-min1;
    //if (std1 - 1 == std){std_erg--; }

    if (min_erg < 0){ min_erg = min_erg*-1; }

    cout << "Rest: "<<std_erg<<" std. und "<<min_erg<<" min\n";
    HinM = std_erg * 60;
    Ges_Min = HinM + min_erg;
    cout << Ges_Min << "GesM\n\n";

    ErgStd = std_erg;
    ErgMin = min_erg;
    

    cout << ErgStd <<"H"<< ErgMin<<"M\n";

    for (int i = 0; i <= Ges_Min; i++){

        if (ErgMin == 0 && ErgStd >= 1){ ErgMin = 60; ErgStd--; }

        if (ErgStd >= 1){
            
            
                if (min<=9) { cout << "Rest: " << ErgStd << " Std " << ErgMin << " min \t (" << std1 << "h 0" << min1 << "m)\n"; }
                else { cout << "Rest: " << ErgStd << " Std "<<ErgMin<<" min\t\t (" << std1 << "h " << min1 << "m)\n"; }
            
        }

        

        else
        {

            if (min <= 9){ cout << "Rest: " << ErgMin << " min \t (" << std1 << "h 0" << min1 << "m)\n"; }
            else{ cout << "Rest: " << ErgMin << " min \t (" << std1 << "h " << min1 << "m)\n"; }
        }


        
        ErgMin--;
        if (ErgMin == 0 && ErgStd == 0) { cout << "\n\nende\n"; /* Beep(1000, 200); */ }

        Sleep(60000);
    }
    return 0;

}



ich hoffe ihr könnt mir helfen, ich blick nicht mehr durch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.11.2014, 20:41 Uhr
~f.-th.
Gast



C++:
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>
#include <cstring>
#include <sstream>
#include <iostream>
#include <time.h>  // warum? hast doch oben schon den cpp-Header
#include <windows.h>
using namespace std;

int main()
{

    int sec, min, min1, min_erg, ErgMin=0, Ges_Min, HinM, std, std1, std_erg, ErgStd=0, tag, monat, jahr;
    char punkt = ','; // Ein wenig unglücklich oder ist das so vorgeben?

anfang: // warum? du brauchst kein goto - wähle andere Schleifen.



Bei der Zeit wird meist 0 bis 59min angezeigt. Ändere deinen Quelltext entsprechend.

Hier ist eine meiner Ansicht nach schreckliche Codezeile:

C++:
    if ((min1 < 0 || min1 >= 60)||((min1<min)&&std1<=std)) { goto anfang; }


? Nicht nur wegen dem "goto". Macht die real das was du möchtest?

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: