Bitte mal den Quelltext Compilieren



  • Da dieses Forum irgendein Smilie problem hat wirds nix mit Reinkopieren. Die anderen beiden posts sollten eigentlich einzellteile enthalten.



  • 😡



  • 😡



  • Kleiner Tip: Du behältst den Überblick über deine Programme eher, wenn du auf solche albernen Copy&Paste-Spielchen verzichtest und das Programm logisch gliederst. Und was bezweckst du mit diesen hunderttausenden von String-Konstanten ala tag13 = "13" usw?



  • Also diese Spielchen sind keine Spielchen die haben was damit zu tun was das programm macht, was leider nich mit herpasst weil es dem forum nicht gefällt. Im grunde is das Programm eine riesige if und else Geschichte.



  • Bitte? Du hattest am Anfang 5 oder 6 Funktionen, die exakt das gleiche gemacht haben, nur dass sie unterschiedlich hießen. In deiner überdimensionalen main-Funktion kam immer wieder der gleiche Block vor. Versuch bitte nicht, diesen Stil zu rechtfertigen.



  • Sag mir deine mail und ich schick dir mal den Queltext. Rechtfertigung is einfach, das programm soll die differenz zwischen 2 Daten ausgeben, da aber zB Monate unterschiedlich lang sind sind einige Blöcke abhängig vom Monat, macht schonmal 12 und dann noch vom enddatum sinds nochmal 12.



  • wie kann man nur so schlechten code produzieren?

    👎 👎 👎 👎
    👎 👎 👎
    👎 👎
    👎



  • Was soll ich denn mit dem Quelltext? Hab doch schon genug davon gesehen ... BTW kann man übers Forum direkt Mails schicken, siehe Benutzerprofil.



  • Raven2 schrieb:

    Rechtfertigung is einfach, das programm soll die differenz zwischen 2 Daten ausgeben, da aber zB Monate unterschiedlich lang sind sind einige Blöcke abhängig vom Monat, macht schonmal 12 und dann noch vom enddatum sinds nochmal 12.

    😮

    Ich ahne furchtbares.



  • Aber schneller isser damit. 👍



  • Habe bei mir ein alte Stück C-Code gefunden was Raven eigentlich helfen sollte.

    Mit dem kleinen main - auch in C - kann man es prüfen.
    Jetzt muss er nur aus dem Datum 3 Zahlen für Jahr, Monat und Tag machen.

    static char Days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    
    long Date2Days(int year, int month, int day)
    {
            long int        x=0;
            long int        i;
            long int        days;
    
            i = year;
            x += (i >> 2) * 1461L;
            x += (i & 3) * 365L;
            if (i & 3)
                    x += 1;
            days = 0;
            i = month - 1;                      /* Add in months */
            while (i > 0)
            {
                    i--;
                    days += Days[i];
            }
            days += day - 1;
            if (month > 2 && (year & 3) == 0)
                    days++;                         /* Currently in leap year */
    		x+=days;
            return (x);
    }
    
    int main()
    {
    long int days,days1,diff,olddays,delta;
    int year;
    days=Date2Days(2003,1,26);
    olddays=0;
    for (year=2003;year>=-7;year--)
    	{
    	days1=Date2Days(year,1,26);
    	diff=days-days1;
    	delta=olddays-days1;
    	printf("%5li, %8li, %8li, %li\n",year,days1,diff,delta);
    	olddays=days1;
    	}
    return 0;
    }
    


  • Ich weiss nicht, ob du dein Problem mit der Umwandlung in long schon geloest hast, aber das waere wohl die einfachste Methode:

    Syntax:
    #include <stdlib.h>
    long atol( const char *str );

    The function atol() converts str into a long, then returns that value. atol() will read from str until it finds any character that should not be in a long. The resulting truncated value is then converted and returned. For example,

    x = atol( "1024.0001" );

    results in x being set to 1024L.

    Dann kannst du ganz problemlos mit ihnen rechnen!



  • PAD schrieb:

    static char Days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    

    Erstens ist Static scheisse ... Zweitens ist in deinem Code afaik keine gescheite Schaltjahr Rechnung



  • Erstens ist Static scheisse

    Bedenke dass das C ist. Bei C++ würd ich dir recht geben.



  • Bashar schrieb:

    Erstens ist Static scheisse

    Bedenke dass das C ist. Bei C++ würd ich dir recht geben.

    mh ok 🙄



  • Die Schaltjahrrechnung für die 400 und 1000 Jahre Regelung fehlt das stimmt

    Aber mit der Basis und dem nachrüsten der beiden Schaltjahrfälle hat er eine überschaubare Lösung für sein Problem.

    Ich glaube die Umrechnung in Borland C 3.x Run time library in das UNIX-Timeformat läuft auf der selben Basis.

    😉 Wie sieht denn die korrekte Schaltjahrregelung aus wenn ich in die Vergangenheit gehe. Bis zu welchem jahr gilt Sie, wann muss ich Kalender Anpassungen vornehmen (denk mal an die Oktoberrevolution im November)



  • Also ihr habt Probleme. Mein Programm läuft, es wurde von einer for Schleife verschluckt. Bei der Rechnung hab ich mir mittlerweile mal das oder hergenommen (ka warum das vorher nicht funktioniert hat). Und Schaltjahrrechnung is bei dem Programm das ich mache noch nich drin, mir fällt da nämlich nich so ganz ein wie ich das Lösen kann.


Anmelden zum Antworten