Prog



  • die letzte lisa war wer anders ich bin nich andrey und sehr froh das mir hier jemand geholfen hat!! bitte noch nich schliessen!!

    werd nochn bissl brauchen bis ich mich in c++ zurechtgefunden habe



  • ach kann doch geschlossen werden ich mach einfach einen neuen auf wenn ich noch eine Frage habe



  • Ach neee, lieber doch nicht schließen !

    Wenn ich noch Fragen habe, dann schreibe ich lieber in diesen Thread, hier hilft mir Andrey und ich falle mit meiner Schnorrerei nicht anderne auf die Nerven !



  • derselbe schlaumeier? schrieb:

    Ach neee, lieber doch nicht schließen !

    Wenn ich noch Fragen habe, dann schreibe ich lieber in diesen Thread, hier hilft mir Andrey und ich falle mit meiner Schnorrerei nicht anderne auf die Nerven !

    afaik ist das ja eigentlich der sinn von solchen foren:
    fortgeschrittene noobs wie ich sorgen dafür, dass die totalen noobs wie der OP die schlauen leute nicht mit billigen fragen unnötig stressen 👎 , dadurch steigt die wahrscheinlichkeit, dass die schlauen leute dann zeit finden, um die fragen von fortgeschrittenen noobs wie mir hin und wieder mal zu beantworten 👍

    ...und dann gibt es noch irgendwelche leute, die anscheinend nichts besseres zu tun haben, als den forum hier mit irgendeinem müll zu füllen, und sich dann auch noch anscheinend für witzig halten 👎

    \frage: wo bleiben denn die moderatoren, wenn man sie braucht? Macht den thread dicht, dem forum steht auch nicht unendlich viel speicherplatz zur verfügung, und die mittelmäßigen witze von dem scherzkeks da sind imho keinen byte wert... 👎



  • möchte dir nochmal danken andrey hast dich echt bemüht 👍 👍 , aber ohne Amnmeldung und mit der Option unregestriert auch Forenbeiträge zu verfassen scheints nich zu klappen hier .. 👎 👎



  • @Andrey: *strahlende Rüstung verleih* !!



  • Strahlende rüstung? Wirklich?... was denn, reaktivpanzerung aus uran und entsprechende panzerbrechende radioaktive KE-penetrator-munition? Cool, danke^^ 👍 kann man im alltag immer gut gebrauchen^^



  • #include <stdio.h>

    void main()
    {
    int Eingabewert,Tag,c,Monat,Jahr;

    do

    {

    printf("Bitte geben Sie das Datum in der Form TTMMJJ ein!\n");

    scanf("%d",&Eingabewert);

    Tag=Eingabewert/10000;/* Der eingegebene Wert wird durch 10000 geteilt. Weil die Variablen keine Gleitkommazahlen sind, fallen die Kommastellen weg*/

    if(Tag<=31)

    {
    printf("Tag:%i\n", Tag);

    }

    else if (Tag>31)

    {

    printf("Es gibt nur max. 31 Tage, erneute Eingabe erforderlich!\n")

    }

    c=Eingabewert%10000; /*Die letzten 4 Zahlen vom eingegebenen Wert werden behalten*/

    Monat= c/100; /*Dieser Wert wird durch 100 geteilt-die ersten 2 Zahlen bleiben stehen*/

    if(Monat<=12)

    {
    if (Monat==1)

    {

    else if (Monat==1)

    {

    printf("Monat: Januar\n"); /*Jetzt wird jeder Zahl von 1 bis 12 ein Monatsname zugeteilt!*/

    }

    else if (Monat==2)

    {
    printf (Monat: Februar\n");

    }

    else if (Monat==3)

    {

    printf( "Monat: Maerz\n");

    }

    else if (Monat==4)

    {

    printf( "Monat: April\n");

    }

    else if (Monat==5)

    {

    printf( "Monat: Mai\n");

    }

    else if(Monat==6)

    {

    printf( "Monat: Juni\n");

    }

    else if(Monat==7)

    {

    printf("Monat: Juli\n");

    }

    else if(Monat==8)

    {

    printf("Monat: August\n");

    }

    else if(Monat==9)

    {

    printf("Monat: September\n");

    }

    else if(Monat==10)

    {

    printf("Monat: Oktober\n");

    }

    else if(Monat==11)

    {

    printf("Monat: November\n");

    }

    else if(Monat==12)

    {

    printf("Monat: Dezember\n");

    }

    }

    else if (Monat>12)

    {

    printf("Nur 12 Monate verfügbar!)\n");

    }

    }while(Tag>31 || Monat>12);

    Jahr=Eingabewert%100;

    printf("Jahr: %i\n",Jahr+2000);

    }

    wie kann ich denn jetzt noch den Monaten entsprechende maximale Tage zuordnen?? (z.b. hat ja der februar meist nur 28)



  • Lisa-Blume schrieb:

    #include <stdio.h>

    void main()
    {
    int Eingabewert,Tag,c,Monat,Jahr;

    do

    {

    printf("Bitte geben Sie das Datum in der Form TTMMJJ ein!\n");

    scanf("%d",&Eingabewert);

    Tag=Eingabewert/10000;/* Der eingegebene Wert wird durch 10000 geteilt. Weil die Variablen keine Gleitkommazahlen sind, fallen die Kommastellen weg*/

    if(Tag<=31)

    {
    printf("Tag:%i\n", Tag);

    }

    else if (Tag>31)

    {

    printf("Es gibt nur max. 31 Tage, erneute Eingabe erforderlich!\n")

    }

    c=Eingabewert%10000; /*Die letzten 4 Zahlen vom eingegebenen Wert werden behalten*/

    Monat= c/100; /*Dieser Wert wird durch 100 geteilt-die ersten 2 Zahlen bleiben stehen*/

    if(Monat<=12)

    {
    if (Monat==1)

    {

    else if (Monat==1)

    {

    printf("Monat: Januar\n"); /*Jetzt wird jeder Zahl von 1 bis 12 ein Monatsname zugeteilt!*/

    }

    else if (Monat==2)

    {
    printf ( "Monat: Februar\n");

    }

    else if (Monat==3)

    {

    printf( "Monat: Maerz\n");

    }

    else if (Monat==4)

    {

    printf( "Monat: April\n");

    }

    else if (Monat==5)

    {

    printf( "Monat: Mai\n");

    }

    else if(Monat==6)

    {

    printf( "Monat: Juni\n");

    }

    else if(Monat==7)

    {

    printf("Monat: Juli\n");

    }

    else if(Monat==8)

    {

    printf("Monat: August\n");

    }

    else if(Monat==9)

    {

    printf("Monat: September\n");

    }

    else if(Monat==10)

    {

    printf("Monat: Oktober\n");

    }

    else if(Monat==11)

    {

    printf("Monat: November\n");

    }

    else if(Monat==12)

    {

    printf("Monat: Dezember\n");

    }

    }

    else if (Monat>12)

    {

    printf("Nur 12 Monate verfügbar!)\n");

    }

    }while(Tag>31 || Monat>12);

    Jahr=Eingabewert%100;

    printf("Jahr: %i\n",Jahr+2000);

    }

    wie kann ich denn jetzt noch den Monaten entsprechende maximale Tage zuordnen?? (z.b. hat ja der februar meist nur 28)

    zudem bekomm ich den fehler in den ersten zeilen nich weg und wie das jetz mit dem ich nenn es mal " konvertieren " im compiler geht weiss ich auch nich welches programm kann ich/sollte ich nehmen

    über hilfe bin ich sehr dankbar

    gruß lisa

    ps. hab mich anmelden können



  • Hi Lisa,

    sorry, aber Dein Code ist grauenhaft 😉 !
    Mal ein paar Hinweise:

    • main() muss int zurückgeben, um standardkonform zu sein - selbst wenn Anderes zufällig geht, sollte man es sich gleich richtig angewöhnen.
    • printf/scanf() sind C-Altlasten, für die es in ++ die viel besseren (komfortableren, sichereren, ...) Varianten cout/cin und #include<iostream> (statt stdio.h) gibt
    • Endlose if-else-if-Ketten sind in 99% der Fälle überflüssig und führen in 102% der Fälle zu unlesbarem/unwartbarem Code.
    • Da int's sowieso keine Nachkommastellen ahben können, braucht man ach keine "wegzuschneiden".
    • Wenn Du den Eingabewert durch 10000 teilst, sind damit die Informationen der letzten 4 Stellen (Monat, Tag) einfach weg und kommen auch nicht wieder.
    • Offensichtlich willst Du Zahlen Zeichenketten ("Strings") zuordnen (1 -> "Januar", 2 -> ...) Für sowas bieten sich "Container" an. Wenn es so einfach ist, wie hier (simples 1:1-Mapping von 1-12 auf "Januar"-"Dezember"), reichen vector oder gar ein Array aus. Die Position im Container entspricht dann Deiner Zahl.
    • Dasselbe geht für die "maximale Anzahl von Monatstagen": Array.

    Mal ein kleines Beispiel:

    string const MonatsListe[] = { "Januar", "Februar", "Maerz" };
    unsigned int const maxTageInMonat[] = { 31, 28, 31 };
    
    int main() {
       unsigned int Eingabewert, Tag, Monat,Jahr;
       bool gueltig = false;
    
       while(!gueltig) {
          cout << "Bitte geben Sie das Datum in der Form TTMMJJ ein!\n";
          if(cin>>Eingabewert && Eingabewert > 0) {
              Jahr = Eingabewert % 100;
              Eingabewert /= 100;
              Monat = Eingabewert;
              Tag = Eingabewert / 10;
              gueltig = Monat > 0 && Monat <= 3 && Tag <= maxTageInMonat[Monat-1]; // -1, weil bei Array ab 0 gezählt wird
          }
       }
    
       cout << Tag << "." << MonatsListe[Monat-1] << " "<< Jahr << "\n";
       return 0;
    }
    

    So - das solltest Du noch korrigieren auf/erweitern um

    • eine korrekte Berechnung von Tag/Monat/Jahr (habe ein paar Fehler eingebaut ;))
    • Prüfung, ob der Eingabewert genug (und nicht zuviel ?) Stellen hat,
    • eine Abbruchbedingung (öfter als 3mal braucht niemand zu probieren; Man kann jede Funktion - auch main() - mittels return verlassen)
    • Schaltjahresprüfung für den Februar (vllt. eine Funktion ?)
    • ...

    Gruß,

    Simon2.


Anmelden zum Antworten