switch
-
Hallo,
kennt sich jemand aus wie die switch in C funktioniert? ich weiß das nur in c++ und hab das so in meinen Kalender mal gemacht aber die funktioniert nicht.
#include <stdio.h>
#include <stdlib.h>int main ()
{
int tag,monat,jahr;
int januar=31,februar=28,maerz=31,april=30,mai=31,juni=30,juli=31,august=31,september=30,october=31,november=30,dezember=31;
char weiter ='j';
int schaltjahr;
while(weiter == 'j')
{printf("\n Bitte geben Sie das Datum in der Form TT.MM.JJJJ ein!\n");
printf("\n Bitte Geben Sie das jahr ein! \n"); // Aufforderung zur Jahres Eingabe!
scanf("%i",&jahr);printf("\nBitte geben Sie ein Monat ein!\n"); // Aufforderung zur Monat Eingabe!
scanf("%i",&monat);printf("\nBitte geben Sie ein Tag ein! \n"); // Aufforderung zur Monat Eingabe!
scanf("%i",&tag);switch(monat)
{
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;
}schaltjahr = (jahr%4 && jahr %100 && jahr%400);
if( (januar>31)||
(februar>28) && (!(schaltjahr))||
(maerz > 31)||
(april >30)||
(mai>31)||
(juni >30)||
(juli > 31)||
(august >31)||
(september>30)||
(october>31)||
(november>30)||
(dezember >31)
)
{
printf(" \n Bitte ueberprüfen Sie ihre Eingabe \n Keine %i Tage in %i \n",tag,monat);
}else
{
printf("\n Datum ist Plausibel! \n");
printf("\n Tag %i Monat %i Jahr %i \n", tag, monat, jahr);
}printf("wollen Sie den den Prozess wiederholen \nDann taetigen Sie für Ja die Taste j und fuer Nein die Taste n");
weiter=getch();}
system("pause");}
lg hasso
-
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.
-
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