Brauche Hilfe fuer eine Schleife



  • Moin, ich habe eine Schleife geschrieben, die mir zu meinen einspaltigen Werten in einer Datei eine Indexnummer hinzuschreibt und zwar in der Form: Monat, Tag, Stunde, Minute und dann meinen Wert. Allerdings schaffe ich es nur, dass die Tage konstant bis 30 gezaehlt werden und dann der Monat um 1 erhoeht wird.

    Frage: Wie schaffe ich es, dass auch der 31. der jeweiligen Monate beruecksichtigt wird und z.b. auch der 28.Februar (schaltjahr unbeachtet)?

    Hier meine Schleife:

    while (fscanf(fp,"%lf",&value)!=EOF) {
    minute = i%60;
    stunde = (i/(60))%24;
    tag = 1+(i/(60*24))%30;
    monat = 1+(i/(60*24*30))%12;
    fprintf(fwp,"%02d %02d %02d %02d %lf\n",monat,tag,stunde,minute,value);
    ++i;
    }

    Gruss Illu



  • Die Form zur Veranschaulichung ist so:

    Monat, Tag, Stunde, Minute, Wert

    01 01 00 00 3.000000
    01 01 00 01 3.100000
    01 01 00 02 3.200000
    01 01 00 03 3.300000
    ...
    ...
    01 30 23 57 4322.700000
    01 30 23 58 4322.800000
    01 30 23 59 4322.900000
    02 01 00 00 4323.000000
    02 01 00 01 4323.100000
    02 01 00 02 4323.200000



  • das geht nich so einfach ohne sonderfällte zu beachten...

    wieso machst du das so? soll das ein zeitstempel sein? oder nur als Index?



  • soll quasi nen Zeitstempel sein, weil das Programm zu jeder minute des jahres den passenden wert suchen soll. hast du ne andere idee?



  • Also Datumsrechnung ist auf jeden Fall nicht einfach, da musst du dich einarbeiten, es ist aber nicht unschaffbar. In Delphi sollte ich sowas mal in der Schule machen...



  • IFIllusion schrieb:

    soll quasi nen Zeitstempel sein, weil das Programm zu jeder minute des jahres den passenden wert suchen soll. hast du ne andere idee?

    probier doch mal was mit strftime.
    🙂



  • die schleife



  • struct Days tage{
    int jan = 31;
    int feb = 28;
    ...
    };
    ? sollte ein billiger ansatz mal sein, dein problem ist trivial und kann sogar nur mit paar if anweisungen gelöst werden


Anmelden zum Antworten