C - Klausuraufgabe - Brauche eure Hilfe
-
Vielen Dank fuer eure schnellen Antworten.
Ich dachte mir dass hier keiner Lust hat mir ein Onlinetutorium zu geben deswegen hab ich einfach mal nach der Loesung gefragt:)
Die Loesung von Michiru erscheint mir etwas kompliziert (wahrscheinlich irre ich mich).
Das habe ich schon mal geschrieben:#include <stdio.h>
int main(void){
int eingabe;scanf("%d", &eingabe);
switch(eingabe)
{
case '5': Fuenf; break;
case '6': Sechs; break;
case '7': Sieben; break;
case '8': Acht; break;
case '9': Neun; break;
}printf("%d\n", eingabe);
return 0;
}Wahrscheinlich ist das Schrott. Der Compiler gibt mir die Fehelermeldung dass Fuenf bis Neun nicht deklariert sind?!
Vielen Dank
-
--jr-- schrieb:
Wahrscheinlich ist das Schrott. Der Compiler gibt mir die Fehelermeldung dass Fuenf bis Neun nicht deklariert sind?!
Was eigentlich nicht verwundern sollte...
Du könntest im ersten Moment so etwas schreiben wollen:const char* fuenf = "Fuenf"; const char* sechs = "Sechs"; // etc.
Besser wäre in dem Fall, wie schon geschrieben, dies mit einem Array zu lösen.
Aber um bei deinem Code zu bleiben, könntest du einen char* mit 0 initialisieren, das switch Kontrukt durchwandern und ggf. dem Pointer eine Zeichenkette zuweisen:#include <stdio.h> int main(void) { int eingabe; scanf("%d", &eingabe); const char* nr = 0; switch(eingabe) { case '5': nr="Fuenf"; break; case '6': nr="Sechs"; break; case '7': nr="Sieben"; break; case '8': nr="Acht"; break; case '9': nr="Neun"; break; } if(nr) puts(nr); return 0; }
-
Vielleicht solltet ihr nicht auf chars in eurem switch prüfen sondern auf ints. Dann würden die Sache von _falke auch funktionieren.
#include <stdio.h> const char *werte[] = {"Fuenf", "Sechs", "Sieben", "Acht", "Neun"}; int main() { int eingabe; scanf("%d", &eingabe); if(eingabe >= 5 && eingabe <= 9) printf("%s", werte[eingabe - 5]); }
-
Aber die Aufgabe soll doch ohne If oder If else geloest werden...
-
Oh shit, nicht drauf geachtet...
-
_Falkes Code kann man aber ganz leicht so abändern, dass er ohne if-Abfrage immer funktioniert.
-
wxSkip schrieb:
_Falkes Code kann man aber ganz leicht so abändern, dass er ohne if-Abfrage immer funktioniert.
Ja, und das mach' ich auch mal schnell.
#include <stdio.h> int main(void) { int eingabe; const char* def = ""; const char* nr; scanf("%d", &eingabe); switch(eingabe) { case 5: nr="Fuenf"; break; case 6: nr="Sechs"; break; case 7: nr="Sieben"; break; case 8: nr="Acht"; break; case 9: nr="Neun"; break; default: nr = def; break; } puts(nr); return 0; }
-
--jr-- schrieb:
Aber die Aufgabe soll doch ohne If oder If else geloest werden...
Das habe ich überlesen sry.
-
scanf("%d", &eingabe);
gefordert war: welches ein Zeichen von der Tastatur einliest.
Kann schon keine volle Punktzahl mehr geben.
-
dabei hat wutz vollkommen recht...
int main(){ char eingabe; const char* zahl; printf("Geben sie eine Zahl zwischen 1 und 5 ein!\n"); scanf("%c", &eingabe); eingabe-=48; // 1 = 49, 2 = 50, 3 = 51 etc. wenn man davon jetzt 48 abzieht, kommt // man auf den gewünschten wert, aber achtung: in eingabe steht jetzt ein Steuerungs- // zeichen switch(eingabe){ case 1: zahl="EINS"; break; case 2: zahl="ZWEI"; break; case 3: zahl="DREI"; break; case 4: zahl="VIER"; break; case 5: zahl="FÜNF"; break; default: zahl="Falsche Eingabe!"; } puts(zahl); return 0; }
-
itedvo schrieb:
dabei hat wutz vollkommen recht...
int main(){ char eingabe; const char* zahl; printf("Geben sie eine Zahl zwischen 1 und 5 ein!\n"); scanf("%c", &eingabe); eingabe-=48; // 1 = 49, 2 = 50, 3 = 51 etc. wenn man davon jetzt 48 abzieht, kommt // man auf den gewünschten wert, aber achtung: in eingabe steht jetzt ein Steuerungs- // zeichen switch(eingabe){ case 1: zahl="EINS"; break; case 2: zahl="ZWEI"; break; case 3: zahl="DREI"; break; case 4: zahl="VIER"; break; case 5: zahl="FÜNF"; break; default: zahl="Falsche Eingabe!"; } puts(zahl); return 0; }
Dsa richtige Funktionieren deines Codes wird von ANSI C aber auch nicht garantiert. ('0' muss nicht gleich 48 sein, Ü muss es vielleicht gar nicht im Zeichensatz geben). Macht es doch einfach mit case '5':, case '6', usw.
-
bist jetzt hat es bei mir immer super funktioniert, ok die
umlaute sind nicht enthalten, dafür hab ich mir auch was geschrieben:#ifndef DEF_H #define DEF_H #define AE (unsigned char)142 #define ae (unsigned char)132 #define OE (unsigned char)153 #define oe (unsigned char)148 #define UE (unsigned char)154 #define ue (unsigned char)129 #define ss (unsigned char)225 #endif /* DEF_H */
-
Oh Gott, hilf!
-
ach, wieso? es funktioniert und das zählt für mich...
-
itedvo schrieb:
ach, wieso? es funktioniert und das zählt für mich...
Das haben die AKWe in Japan bis jetzt auch.
-
bis auf den unterschied dass dieser programm-code nicht radio aktiv ist
-
itedvo schrieb:
bis auf den unterschied dass dieser programm-code nicht radio aktiv ist
Ja, und wenn er noch ein Backup in den USA macht ist er auch noch ziemlich sicher vor Naturkatastrophen.
-
wxSkip schrieb:
itedvo schrieb:
bis auf den unterschied dass dieser programm-code nicht radio aktiv ist
Ja, und wenn er noch ein Backup in den USA macht ist er auch noch ziemlich sicher vor Naturkatastrophen.
das wäre dann der anfang vom ende ^^
nein, jetzt wirklich, was is an meinem code jetzt so schlimm ?
-
itedvo schrieb:
nein, jetzt wirklich, was is an meinem code jetzt so schlimm ?
Zweibuchstabige Makros.
-
aha, und was währe für ä besser geignet als ae? etwa _ae was wiederum etwas ist
was man vermeiden sollte, da underscore schon verwendet sein kann...was wären den bessere namen? damit ich es nächstes mal besser machen kann...