KW nach Din 1355 bestimmen



  • mapper schrieb:

    _ASSERT kannst du durch std::assert ersetzen, wenn du <cassert> inkludierst.

    Ohne std::, assert ist ein Makro.



  • Programmierheini schrieb:

    1. Weil er keinen kennt, der auch programmieren kann

    Das heißt, dass er jemanden anheuert, der es nicht kann, nur weil er keinen kennt der es kann?

    Programmierheini schrieb:

    2. Weil das nicht das erste Programm ist, dass ich ihm programmiere

    Ach du liebes Bisschen...

    Programmierheini schrieb:

    3. Noch NIE ein Fehler in meinen Programmen war, wenn sie fertig sind, d.h. sie funktionieren einwandfrei

    *HUST* Dass da keine Bugs drin sind bezweifle ich stark.

    Programmierheini schrieb:

    4. Weil wir Freunde sind

    Das ist aber immer noch kein Grund.

    Programmierheini schrieb:

    5. weil das der beste Weg für mich ist, programmieren zu lernen->learning by doing

    Ja, aber nicht so das jemand davon evt. Schaden trägt, weil du noch lernst. Learning by doing heißt, du probierst es aus. Deine Versuche sind dann aber keine ernste Sache. So richtig nutzbare Programme machen auch erfahrenere Programmierer.



  • Vielen Dank, ich glaube ich bin jetzt ein Schritt weitergekommen. Denn jetzt sagt der Compiler mir, dass er ein Bezeichner erwartet:
    [C++ Fehler] Unit1.cpp(748): E2272 Bezeichner erwartet 😞

    Ich habe jetzt alles so kopiert, wie du es gesagt hast, aber wie rufe ich dann die Funktion auf? bzw. wie komme ich an die Variable nKalenderWoche ? 😕



  • Hacker schrieb:

    So richtig nutzbare Programme (mit GUI & co.) macht man als erfahrener Programmierer, wie Bashar o. ä.

    Lass mich da aus dem Spiel. Ich mach außerdem keine GUI.



  • Bashar schrieb:

    Hacker schrieb:

    So richtig nutzbare Programme (mit GUI & co.) macht man als erfahrener Programmierer, wie Bashar o. ä.

    Lass mich da aus dem Spiel. Ich mach außerdem keine GUI.

    Darum geht es aber auch nicht. Wenn dein Freund (@TE) das wirklich nutzen will dann sollte er sich entweder nach Programmen im Netz umsehen, dein Programm mit Vorsicht nutzen (oder nur als Tester fungieren) oder einen erfahrenen Programmierer beauftragen. Du bist ja noch Anfänger.

    Ich empfehle dir ein gutes Buch (such nach dem Thread), lerne erstmal Grundlagen bevor du dich an ein Projekt ranwagst (ich entnehme der Fehlermeldung dass eine Source-Datei gar 750 Zeilen enthält).



  • zu Hacker:
    Ich gebe zu, ich bin noch Anfänger, aber nur weil ich mich nicht mit eigenen Funktionen u.a. auskenne, heist das noch lange nicht, dass ich nicht programmieren kann. Außerdem musst du dir keine Sorgen machen, denn
    1. werden meine Programme "hart auf die Probe gestellt", und
    2. werden die ersten 2 Monate mit herkömlichen mitteln (Zetteln) überprüft.
    3. kann ich dir gern ein "1-mal-Programm" für ein Fest zeigen. Du musst mir nur sagen, wie



  • Programmierheini schrieb:

    zu Hacker:
    Ich gebe zu, ich bin noch Anfänger, aber nur weil ich mich nicht mit eigenen Funktionen u.a. auskenne, heist das noch lange nicht, dass ich nicht programmieren kann. Außerdem musst du dir keine Sorgen machen, denn
    1. werden meine Programme "hart auf die Probe gestellt", und

    Das zeigt schon etwas. Du kannst Bugs nicht "einfach so" finden. Manchmal kann das Jahre dauern, weil spezielle Umstände (Variablen, o. ä.) spezielle Werte haben müssen um dein Programm zum Absturz zu bringen und Speicherlecks zu erzeugen, o. ä.

    Programmierheini schrieb:

    2. werden die ersten 2 Monate mit herkömlichen mitteln (Zetteln) überprüft.

    Das versteh ich nicht ganz 😃 was meinst du?

    Programmierheini schrieb:

    3. kann ich dir gern ein "1-mal-Programm" für ein Fest zeigen. Du musst mir nur sagen, wie

    Lol. Ideone? 😃 Oder schick mir das ganze als ZIP.
    Oder: poste es hier.



  • wieder zu Hacker:
    mein Programm ist nur deshab solang, weil ich 30 Buttons mit je 10 Zeilen Quelltext, und 30 CSpinEdits mit je 9 Zeilen Quelltext habe.
    30x10+30x9=570 Zeilen QT, dann noch ca. 200 Zeilen für den rest



  • Programmierheini schrieb:

    wieder zu Hacker:
    mein Programm ist nur deshab solang, weil ich 30 Buttons mit je 10 Zeilen Quelltext, und 30 CSpinEdits mit je 9 Zeilen Quelltext habe.
    30x10+30x9=570 Zeilen QT, dann noch ca. 200 Zeilen für den rest

    ICH HOFFE DU NUTZT SCHLEIFEN XD
    Jetzt ernsthaft.



  • nochmal zu Hacker:
    -Die Kassierer machen weiter wie zuvor, nämlich mit Strichlisten, und lassen nebenher mein Proggi laufen. Dann vergleichen sie die Ergebnisse->überprüfung
    -ich schicks dir per E-Mail



  • Hacker schrieb:

    Programmierheini schrieb:

    2. werden die ersten 2 Monate mit herkömlichen mitteln (Zetteln) überprüft.

    Das versteh ich nicht ganz 😃 was meinst du?

    Das alte manuelle Kassensystem wird noch 2 Monate parallel gefahren. Das ist glaub ich im IT-Bereich nichts ungewöhnliches. Die Probleme kommen dann beim nächsten Schaltjahr oder anderen Jahrtausendereignissen 😉



  • Bashar schrieb:

    Hacker schrieb:

    Programmierheini schrieb:

    2. werden die ersten 2 Monate mit herkömlichen mitteln (Zetteln) überprüft.

    Das versteh ich nicht ganz 😃 was meinst du?

    Das alte manuelle Kassensystem wird noch 2 Monate parallel gefahren. Das ist glaub ich im IT-Bereich nichts ungewöhnliches. Die Probleme kommen dann beim nächsten Schaltjahr oder anderen Jahrtausendereignissen 😉

    Ah, ich hab das nicht ganz verstanden, ok 🙂
    @TE: Danke, ich sehs mir mal an. Zurück zum oberen Punkt:
    WAS HEISST X ZEILEN PRO OBJEKT? XD



  • Mit E-Mail geht kein Anhang, zum posten zu groß (1080 Zeilen 🙄 )
    du müsstest mir deine E-Mail geben, oder ein Downloadportal zeigen
    2. Ich habe nirgends gefunden, wie man z.B.
    Button1->Caption="123";
    Button2->Caption="123";
    Button3->Caption="123";
    Button4->Caption="123";
    Button5->Caption="123";
    Button6->Caption="123";
    Button7->Caption="123";
    usw. in Schleifen setzen kann
    ansonsten verwende ich natürlich schleifen



  • Vielleicht mit Variablen? Buttonx? geht nicht, bin noch auf der Suche



  • Bashar schrieb:

    mapper schrieb:

    _ASSERT kannst du durch std::assert ersetzen, wenn du <cassert> inkludierst.

    Ohne std::, assert ist ein Makro.

    Oh, natürlich, danke.
    Dieser Thread macht aber irgendwie keinen Sinn mehr, ein Fragesteller, der noch nicht einmal die kompletten Fehlermeldungen postet und ein Spammer, der alles, nur nichts zum Thema von sich gibt.
    Traurig, das war mal anders.

    Noch mal zum Thema: Du suchst Arrays. Falls die Größe dynamisch sein soll, das Array also wachsen können soll, nimm gleich einen std::vector.



  • Endlich wieder zurück zum Thema 🙂 Ich habe alle Fehlermeldungen gepostet, aber egal
    Vielen Dank, ohne des std:: geht es. Aber wie kann ich jetzt die Funktion aufrufen/benutzen?



  • @mapper: Das ist nicht dein Ernst, oder? Da beschäftigt sich einer mit GUI-APIs und schreibt Programme die genutzt werden sollen, und kennt Arrays nicht. Aber Hauptsache beim Thema bleiben, oder was?

    Aber... zurück
    Zum Thema: Was genau am Aufruf klappt bei dir nicht?
    Du fügst den Funktionsaufruf mit den entsprechenden Parametern da ein, wo es sein soll, oder was ist verwirrend?



  • Ich weiß aber leider nicht, wie der Funktionsaufruf konkret aussehen soll, ich habe schon etliches durchprobiert, aber entweder er es passiert garnichts, oder Fehlermeldung



  • Programierheini schrieb:

    Ich weiß aber leider nicht, wie der Funktionsaufruf konkret aussehen soll, ich habe schon etliches durchprobiert, aber entweder er es passiert garnichts, oder Fehlermeldung

    ➡ Beschreibung! Zeig Code, Fehlermeldungen usw. wir sind keine Wahrsager.



  • short getKalenderwoche(short uTag, short uMonat, short uJahr) //diese Funktion möchte ich aufrufen, und habe keine Ahnung wie, weil ich des noch nie gemacht habe
    {
    short getTagDesJahres(const UINT uTag, const UINT uMonat, const UINT uJahr);
    short getWochentag(const UINT uTag, const UINT uMonat, const UINT uJahr);
    bool istEinSchaltjahr(const UINT uJahr);
      // Berechnung erfolgt analog DIN 1355, welche besagt:
      // Der erste Donnerstag im neuen Jahr liegt immer in der KW 1.
      // "Woche" ist dabei definiert als [Mo, ..., So].
    
      short nTagDesJahres = getTagDesJahres(uTag, uMonat, uJahr);
    
      // Berechnen des Wochentags des 1. Januar:
      short nWochentag1Jan = getWochentag(1, 1, uJahr);
    
      // Sonderfälle Freitag und Samstag
      if (nWochentag1Jan >= 5)
        nWochentag1Jan = nWochentag1Jan - 7;
    
      // Sonderfälle "Jahresanfang mit KW - Nummer aus dem Vorjahr"
      if ( (nTagDesJahres + nWochentag1Jan) <= 1)
      {
        return getKalenderwoche(31, 12, uJahr - 1);
      }
    
      short nKalenderWoche = ((nTagDesJahres + nWochentag1Jan + 5) / 7);
    
      assert(nKalenderWoche >= 1);
      assert(nKalenderWoche <= 53);
    
      // 53 Kalenderwochen hat grundsätzlich nur ein Jahr,
      // welches mit einem Donnerstag anfängt !
      // In Schaltjahren ist es auch mit einem Mittwoch möglich, z.B. 1992
      // Andernfalls ist diese KW schon die KW1 des Folgejahres.
      if (nKalenderWoche == 53)
      {
        bool bIstSchaltjahr = istEinSchaltjahr(uJahr);
    
        if (  (nWochentag1Jan  ==  4) // Donnerstag
          ||  (nWochentag1Jan  == -3) // auch Donnerstag
          ||  ((nWochentag1Jan ==  3) && bIstSchaltjahr)
          ||  ((nWochentag1Jan == -4) && bIstSchaltjahr)
          )
        {
          ; // Das ist korrekt und erlaubt
        }
        else
          nKalenderWoche = 1; // Korrektur des Wertes
      }
    
      return nKalenderWoche; //diesen Wert möchte ich als Variabel haben
    }
    

Anmelden zum Antworten