Zum Inhalt springen

Finde den Fehler nicht ! Berechnung der Tage zwischen 2 Datume (Plural korrekt ?)


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hi !

Sitze schon seid über einer Stunde dran, finde nicht raus warum ich immer ein falsches Ergebnis bekomme (vermute habe was bei der Verschachtelung falsch gemacht).

Das Progrämmchen soll (ohne Strings usw) die Tage zwischen 2 Datume (Daten...wie auch immer) ausgeben. Davon ausgegangen das zweite Datum ist das jüngere bei der Eingabe. Meine Testdaten die nicht funktionieren sind: 1. Datum: 05.08.2011 und das 2. Datum: 05.03.2012. Rauskommen müsste 210, kommt aber 120.


#include <iostream>

#include <QString>

#include <ncurses.h>


using namespace std;


// int month[12];

int day1, day2, month1, month2, tempMonth, year1, year2;

int output;


int main()

{

    cout << "Please enter the first day (Format: 00): " << endl;

    cin >> day1;


    cout << "Please enter the first month (Format: 00): " << endl;

    // cin >> month[0];

    cin >> month1;


    cout << "Please enter the first year (Format: 0000) " << endl;

    cin >> year1;


    cout << "Please enter the second day (Format: 00): " << endl;

    cin >> day2;


    cout << "Please enter the second month (Format: 00): " << endl;

    cin >> month2;


    cout << "Please enter the second year (Format: 0000): " << endl;

    cin >> year2;


    if (year1 = year2)

    {


        if (month1 < month2)

        {

            tempMonth = (month2 - month1) - 2;

            tempMonth = tempMonth * 30;

            day1 = 30 - day1;


            output = (day1 + day2) + tempMonth;


            cout << "The days between both dates: " << output << endl;

            cout << "" << endl;

        }


        else

        {

            tempMonth = (month1 - month2) - 2;

            tempMonth = tempMonth * 30;

            day1 = 30 - day1;


            output = (day1 + day2) + tempMonth;


            cout << "The days between both dates: " << output << endl;

            cout << "" << endl;

        }



    }


    else

    {

        if (month1 < month2)

        {

            month1 = 12 - month1;

            tempMonth = (month1 + month2) - 1;

            tempMonth = tempMonth * 30;

            day1 = 30 - day1;


            output = (day1 + day2) + tempMonth;


            cout << "The days between both dates: " << output << endl;

            cout << "" << endl;

        }


        else

        {

            month1 = 12 - month1;

            tempMonth = (month1 + month2) - 1;

            tempMonth = tempMonth * 30;

            day1 = 30 - day1;


            output = (day1 + day2) + tempMonth;


            cout << "The days between both dates: " << output << endl;

            cout << "" << endl;

        }

    }

}

Bearbeitet von LeeHarvey
Geschrieben

Es würde nicht schaden, die Tage je Monat etwas realistischer zu gestalten.

Auch solltest Du Dir einmal überlegen, was eigentlich die folgende Zeile in Deinem Code anrichtet:

if (year1 = year2)

Geschrieben (bearbeitet)

ein heißer tipp: in C ist = keine überprüfung, sondern ne zuweisung. den fehler mach ich auch ständig wenn ich mit zuwenig koffein im blut code schreibe...

== ist die überprüfung.

abgesehen von den 30 Tage-Monaten fehlt da auch noch ne schaltjahrbetrachtung.

ach ja, plural von Datum ist simpel: Daten ^^

Bearbeitet von Shadak
Geschrieben

Leute Leute Danke f die vielen Antworten aber das ist eine Übung die so gestellt wurde. Banken rechnen mit 30 Tagen pro Monat also 360 Tage im Jahr, und ich soll da ohne Arrays oder so arbeiten sondern rein logisch denken und versuchen so den Code zu basteln.

@ Shadak: ja == Zuweisung, = Vergleich, muss ich nochmal drübersehn wo das falsch ist. Und Schaltjahr ist da nicht relevant aber bei Lust und Laune bau ich das mit ein.

@ habbeda: diese Bedingung (year1 = year2) richtet an dass wenn die beiden Daten im selben Jahr liegen (was die Berechnung ja easy macht) ich nicht mit Jahreswechsel rechnen muss, ansonsten wenn das eine Datum 2011 ist das andere 2012 die Aufgabe schon um einiges schwieriger wird.

@ flashpixx: diese difftime Funktion ist zu viel des guten aber danke trotzdem

Die Aufgabe dient zum Üben des logischen Verständnisses.

Geht das überhaupt dass man rein mathematisch und logisch so eine jahrübergreifende Rechnung hinbekommt ? Ohne einem Array dass sagt "höchstens 12 (Monate)" ?

Geschrieben

ja == Zuweisung, = Vergleich, muss ich nochmal drübersehn wo das falsch ist.

Nein das ist falsch:

= Zuweisung und == Vergleich

Geht das überhaupt dass man rein mathematisch und logisch so eine jahrübergreifende Rechnung hinbekommt ?

Ja, aber sinnvoll so ist es nicht

Geschrieben (bearbeitet)
@ Shadak: ja == Zuweisung, = Vergleich, muss ich nochmal drübersehn wo das falsch ist. Und Schaltjahr ist da nicht relevant aber bei Lust und Laune bau ich das mit ein.

*kaffetasse rüberschieb*

Geht das überhaupt dass man rein mathematisch und logisch so eine jahrübergreifende Rechnung hinbekommt ? Ohne einem Array dass sagt "höchstens 12 (Monate)" ?

musst halt ein paar ifs mehr einbauen...

nebenbei, deine benutzereingabe zu programmanfang ist nicht sehr benutzerfeundlich...ich hätt da 2 integers (date1, date2) eingeben lassen mit format 8 stellen und diese 8 stellen dann über ne forschleife mit modulo intern runterbrechen lassen.

Bearbeitet von Shadak
ich brauch mehr kaffee...
Geschrieben

Geht das überhaupt dass man rein mathematisch und logisch so eine jahrübergreifende Rechnung hinbekommt ? Ohne einem Array dass sagt "höchstens 12 (Monate)" ?

Wofür solltest du ein Array brauchen?

Du brauchst noch nicht einmal ein if.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...