definitionen
-
Also diesmal hab ich gleich mehrere Probleme ;)...
Das meiste ist wieder aus einem anfänger tutorial, wird aber dort nicht ausreichend erklärt.1. Wie wird eine Variable mittels #define vordefiniert, also das was am anfang einer Funktion/eines Moduls so aussieht: "int a,b,x,y;" ?
2. Wie kann man eine neue Definition für Zahlen vornehemen (z.b. 1,2,3)[siehe Code]?
3. Wie kann man alle definitionen hinter _wortlaut rückgängig machen bzw. kann man alles zwischen #ifndef _wortlaut und #endif auf einen schlag mit #undef versehen (und nachher wieder mit #define)[siehe Code]?
4. frage steht innerhalb des codes...
Also der Code is nix besonderes. er steht quasi als übungsaufgabe im tut und soll die zahleneingabe als wortlaut wieder ausspucken, allerdings ist der code lücken- und fehlerhaft
Vielen Dank im Vorraus (V O R R A U S, keine ahnung warum das zensiert wird ;))
"wortlaut.h"
#include <stdio.h> #include <conio.h> #define wait getch(); #ifndef _wortlaut #define _wortlaut #define 0 printf("Null"); #define 1 printf("Eins"); #define 2 printf("Zwei"); #define 3 printf("Drei"); #define 4 printf("Vier"); #define 5 printf("Fuenf"); #define 6 printf("Sechs"); #define 7 prinff("Sieben"); #define 8 printf("Acht"); #define 9 printf("Neun"); #define 10 printf("Zehn"): #define EINGABE scanf("%d",&eingabe); #endif
"prog.c"
#include "wortlaut.h" int main(void) { int i,eingabe; EINGABE #undef [???] soll alle Zahlendefs aufheben for(i=0;i<=0<=10;i++) { if eingabe=i { #define [???] soll die aufhebung wieder aufheben ;) printf("\nIhre eingabe war %d\n",i);/* was wird dann hier ausgegeben?? wohl kaum i im wortlaut aber wie geht das dann?*/ #undef [???] wie beim ersten undef (wegen der schleife) } } wait }
-
Mach nicht son Quatsch die Ziffern umzudefinieren >> #define 0 printf("Null");
Schreib#define eins printf("Null"); #undef eins // usw.usw.
-
Na gut Frage 2 und 4 sind vielleicht ein wenig wirr aber eine Variable vorzudefiniern oder einen ganzen definitionsblock mit undef zu versehen sollte doch normal kein allzu grosses problem darstellen.
@balduin jo is warscheinlich quatsch aber ich wollte ja dass er die eingabe mit i vergleicht und wenns übereinstimmt i (also die zahl, wobei diese ja anders definiert wurde) ausgibt. ich weiss schon was du meinst aber ich wollte ja die switch methode vermeiden sodass ich nich jede eventualität prüfen muss...
-
vielleichst suchste was ganz anderes.
int main(void) { int eingabe; char* namen[]={"Null","Eins","Zwei",...}; scanf("%d",&eingabe); printf("Ihre eingabe war %s\n",namen[eingabe]); return 4711; }
und vorrraus wird zensiert, weils nen schreibfehler hat.
-
Du meinst wohl sowas:
int eingabe; c har* arr[] = {"Null", "Eins", "Zwei", "Drei", "Vier", "Fuenf", "Sechs", "Sieben", "Acht" ,"Neun", "Zehn"}; scanf("%d",&eingabe); if (eingabe < 10) printf("\nIhre eingabe war %s\n", arr[eingabe]);
-
beides nich so ganz das was ich gesucht hab, ich wollts nämlich mittels #define und nem abgleich inner for-next schleife machen aber schwamm drüber...
wie gesagt sicherlich sinnvoller sind die fragen 1 und 3. ist die antwort auf die erste frage "typedef"? und es muss doch auch gehn einen def-block zb ab _wortlaut mit undef zu versehen oder mit einem schleifenähnlichen konstrukt rückgängig zu machen oder nich?