switch



  • Hallo, xantus

    Xantus schrieb:

    1. code tags
    2. mach mal die '' um die zahlen weg. switch nimmt nur ordinalen werte.
    '01' gibt es übrigens schonmal _gar nicht_, "01" wäre möglich, allerdings ist es dann weder char noch int.

    wenn ich die '' weg mache und dafür " " setzte stimmt dann ists weder char noch int.

    dann funktioniertdas auch nicht. weil monat ist integer. und die kiste weder integer noch char. was dann?

    könntest du dein lösungsansatz für beispiel januar posten. dass wär super !

    Dankee!

    lg hasso



  • hat sich schon erledigt thx!



  • Xantus schrieb:

    '01' gibt es übrigens schonmal _gar nicht_

    Doch, das nennt sich Multi-Character Literal, oder wie sie der C Standard allgemein nennt, integer character constant.



  • groovemaster schrieb:

    Xantus schrieb:

    '01' gibt es übrigens schonmal _gar nicht_

    Doch, das nennt sich Multi-Character Literal, oder wie sie der C Standard allgemein nennt, integer character constant.

    ok...ich vermeide sowas trotzdem.



  • hasso schrieb:

    case'01':
    printf("januar");
    break;

    case'02':
    printf("febuar");
    break;

    case'03':
    printf("maerz");
    break;

    case'04':
    printf("april");
    break;

    case'05':
    printf("mai");
    break;

    case'06':
    printf("juni");
    break;

    case'07':
    printf("juli");
    break;

    case'08':
    printf("august");
    break;

    case'09':
    printf("september");
    break;

    case'10':
    printf("obtober");
    break;

    case'11':
    printf("november");
    break;

    case'12':
    printf("dezember");
    break;

    da mach dir doch ein array draus

    char *month[] = {"januar", "februar", ...};
    

    🙂



  • Hallo,

    meinst du das so ?

    char *month[12] = {"januar", "februar","maerz", "April", "Mai","Juni", "Juli", "Ausgust", "September","October", "November", "Dezember"};

    und jetzt?

    gruß



  • hasso schrieb:

    und jetzt?

    void print_month (int i)
    {
      printf ("%s\n", month[i-1]);
    }
    

    🙂



  • hasso schrieb:

    Hallo,

    meinst du das so ?

    char *month[12] = {"januar", "februar","maerz", "April", "Mai","Juni", "Juli", "Ausgust", "September","October", "November", "Dezember"};

    und jetzt?

    statt hundertmal dasselbe:

    if(monat > 0 && monat < 13)
      printf("%s\n", month[monat - 1]);
    


  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>

    int main ()

    { // Beginn des Hauptprogramms!

    int tag,monat,jahr;

    char weiter ='j';
    int schaltjahr;
    char *month[12] = {"januar", "februar","maerz", "April", "Mai","Juni", "Juli", "Ausgust", "September","October", "November", "Dezember"};

    //cls

    printf("\n \t \t * ~ * W I L K O M M E N * ~ *\n");
    printf("\n\tUm ins Hauptprogramm zu gelangen, druecken Sie eine Beliebige Taste!\n");
    getch();
    //cls
    while(weiter == 'j')
    {

    do
    {

    printf("\n Bitte geben Sie das Datum in der Form TT.MM.JJJJ ein!\n");

    scanf( "%2u.%2u.%4u", &tag, &monat, &jahr );
    fflush (stdin);

    schaltjahr = (!(jahr%4 && jahr %100 && jahr%400));

    if( (monat ==01 && tag <=31)|| // Solange Bedingungen war wird das Datum ausgegeben!
    (monat ==02 && tag <=28) ||
    (monat ==03 && tag <=31) ||
    (monat ==04 && tag <=30) ||
    (monat ==05 && tag <=31) ||
    (monat ==06 && tag <=30) ||
    (monat ==07 && tag <=31) ||
    (monat ==8 && tag <=31) ||
    (monat ==9 && tag <=30) ||
    (monat ==10 && tag <=31) ||
    (monat ==11 && tag <=30) || //(monat ==02 && (!(schaltjahr)))||
    (monat ==12 && tag <=31) ||
    ((monat ==02) && (tag ==29)&& (schaltjahr)))

    {
    void print_month (int i)
    {
    printf ("%s\n", month[i-1],tag,jahr,schaltjahr);
    }
    }

    else

    {
    printf("\nBitte ueberpruefen Sie ihre Eingabe\nKeine %i. Tage in Monat %i. Jahr %i \n",tag,monat,jahr);// Ausgabe Prüfmodul

    }

    } while( (monat ==01 && tag >31)|| // Prüfmodul! Solange Bedingung wahr, wird der Vorgang wiederholt!
    (monat ==02 && tag >29) ||
    (monat ==02 && tag==29 && (!(schaltjahr)))||
    (monat ==03 && tag >31) ||
    (monat ==04 && tag >30) ||
    (monat ==05 && tag >31) ||
    (monat ==06 && tag >30) ||
    (monat ==07 && tag >31) ||
    (monat ==8 && tag >31) ||
    (monat ==9 && tag >30) ||
    (monat ==10 && tag >31) ||
    (monat ==11 && tag >30) ||
    (monat ==12 && tag >31) ||
    (monat > 12));

    printf("\n\nWollen Sie den den Prozess wiederholen \nDann taetigen Sie fuer Ja die Taste j und fuer Nein die Taste \n\n");
    weiter=getch();

    }

    } // Ende des Hauptprogrammas!

    wo soll das hin?
    void print_month (int i)
    {
    printf ("%s\n", month[i-1],tag,jahr,schaltjahr);
    }

    für siwtch so??

    gruß.



  • hallo

    supertux schrieb:

    hasso schrieb:

    Hallo,

    meinst du das so ?

    char *month[12] = {"januar", "februar","maerz", "April", "Mai","Juni", "Juli", "Ausgust", "September","October", "November", "Dezember"};

    und jetzt?

    statt hundertmal dasselbe:

    if(monat > 0 && monat < 13)
      printf("%s\n", month[monat - 1]);
    

    und die Tage ??? die sind ja das Problem weil die Tage unterschiedlich sind.

    gruß hasso


Anmelden zum Antworten