(Linux/Unix) Was mache ich Falsch??
-
Hallo Freunde,
könnt ihr mal diesen Programm-Listing untersuchen?
Was habe ich Falsch gemacht?#include <stdio.h>
int main()
{
int a, b, d;
char ch;
printf("Fuer eine Addition a, Subtraktion s, Multiplikation m und fuer eine
Division d\n");
scanf("%ch", &ch);
printf("bitte die erste Ziffer ein geben\n");
scanf("%d", &a);
printf("bitte die zweite Ziffer ein geben\n");
scanf("%d", &b);
if (ch ='a') d=a+b;
else if (ch='s') d=a-b;
else if (ch='m') d=a*b;
else d=a/b;
printf("Ergebnis %d\n",d);return 0;
}wenn ich zB. "s" eingebe kommt als Ergebnis "a+b" raus.
Was ist nicht inordnung?
-
==
if (ch == 's')
etc
-
= != ==
man weisst mit = etwas zu, mit == vergleicht man (am besten die Compiler Warnungen anschalten und nicht ignorieren!)
(und Code-Tags benutzen)
-
ich dank euch beiden.
Ich habe neu angefange Programmieren zu lernen (nur mit Hilfe von Büchern).
vielen Dank nochmal.
-
Ich würde es so schreiben:
#include <stdio.h> int main() { int a, b, d; char ch; printf("Fuer eine Addition a, Subtraktion s, Multiplikation m und fuer eine Division d\n"); scanf("%ch", &ch); printf("bitte die erste Ziffer ein geben\n"); scanf("%d", &a); printf("bitte die zweite Ziffer ein geben\n"); scanf("%d", &b); switch(ch) { case 'a': d=a+b; break; case 's':d=a-b; break; case 'm': d=a*b; break; case 'd': d=a/b; break´; default: printf("Fehler!"); } printf("Ergebnis %d\n",d); return 0; }
mit switch ises einacher morgen mach ichs ausfühlicher denn ich hab keine zeit jetzt
-
Danke quizmaster
-
-
wer macht mich da nach
Naja Bitte ich hab nämlich auch ma neu angefangen was für ein buch hast du denn?
(Rein Prvates interesse)
<edit> Verschrieben </edit>[ Dieser Beitrag wurde am 12.03.2003 um 22:08 Uhr von quizzmaster editiert. ]
-
ich würde es so schreiben
#include <stdio.h> int main(void) { puts("Für eine Addition a, Subtraktion s, Multiplikation m und fuer eine Division d"); char ch=getchar(); fputs("zahl1: ",stdout); int a; scanf("%d",&a); fputs("zahl2: ",stdout); int b; scanf("%d",&b); puts("Für eine Addition a, Subtraktion s, Multiplikation m und fuer eine Division d"); switch(ch) { case 'a': printf("%d+%d=%d\n",a,b,a+b); return 0; case 's': printf("%d-%d=%d\n",a,b,a-b); return 0; case 'm': printf("%d*%d=%d\n",a,b,a*b); return 0; case 'd': printf("%d/%d=%d\n",a,b,a/b); return 0; } fprintf(stderr,"falsche Eingabe!\n"); return 1; }
[ Dieser Beitrag wurde am 12.03.2003 um 22:20 Uhr von kingruedi editiert. ]
-
wer macht mich da nach
quizmaster != quizzmaster
-
C für PC's
-
guckt euch das mal bitte an:
#include <stdio.h> #include <math.h> int main() { puts("Folgende Option knnen ausgewhlt werden:\n a fur Addition \n s fur Subtraktion \n m Multiplikation \n d Division \n"); puts("l fur Logarhitmus \n"); char ch=getchar(); fputs("zahl1: ",stdout); float a; scanf("%f",&a); fputs("zahl2: ",stdout); float b; scanf("%f",&b); switch(ch) { case 'a': printf("%f+%f=%f\n",a,b,a+b); return 0; case 's': printf("%f-%f=%f\n",a,b,a-b); return 0; case 'm': printf("%f*%f=%f\n",a,b,a*b); return 0; case 'd': printf("%f/%f=%f\n",a,b,a/b); return 0; case 'l': printf("log %f %f=%f\n",a,b,log10(a)); return 0; } fprintf(stderr,"falsche Eingabe!\n"); return 1; }
Beim Kompilieren tauchen keine Fehler auf aber beim ertsellen:
/root/mathe2/mathe2/main.c:23: undefined reference to `log10'was habe ich schon wieder Falsch gemacht.
[ Dieser Beitrag wurde am 13.03.2003 um 21:19 Uhr von himes editiert. ]
[/cpp][ Dieser Beitrag wurde am 13.03.2003 um 21:21 Uhr von himes editiert. ]
-
du hast vergessen die Math Library mitzulinken, gib mal -lm beim kompilieren an
(und benutz mal endlich Code-Tags)
[ Dieser Beitrag wurde am 13.03.2003 um 21:13 Uhr von kingruedi editiert. ]
-
Opps tut mir leid, ich habe nicht richtig gelesen.
Aber wenn ich:gcc main.c -lm (ich habe nur main.c) passiert nichts.
[ Dieser Beitrag wurde am 13.03.2003 um 21:42 Uhr von himes editiert. ]
-
Warum postest du die math.h? du mußt das programm in etwa so kompilieren
gcc meinprogramm.c -lm
-
gcc main.c -lm
da passiert nichts.
in der Konsole funktioniert sogar
gcc main.c
nicht. Ich kompiliere mit kdevelop und erstelle sie auch mit kdevelop.
-
Dann muss das irgendwo in den Linkereinstellungen mit angegeben werden. Ist dann aber kein C Problem mehr
-
Wenn ich mal sagen darf, er hat die math.h nicht gepostet und dass was er geschrieben hat gcc main.c -lm ist doch korrekt.
Und er benutzt code tags
Übrigens, bei mir funzt der code nich ganz (BCB 5)
Hier der geänderte:
#include <stdio.h> #include <math.h> int main() { float a; float b; char ch; puts("Folgende Option knnen ausgewhlt werden:\n a fur Addition \n s fur Subtraktion \n m Multiplikation \n d Division \n"); puts("l fur Logarhitmus \n"); ch=getchar(); fputs("zahl1: ",stdout); scanf("%f",&a); fputs("zahl2: ",stdout); scanf("%f",&b); switch(ch) { case 'a': printf("%f+%f=%f\n",a,b,a+b); getchar(); return 0; case 's': printf("%f-%f=%f\n",a,b,a-b); getchar(); return 0; case 'm': printf("%f*%f=%f\n",a,b,a*b); getchar(); return 0; case 'd': printf("%f/%f=%f\n",a,b,a/b); getchar(); return 0; case 'l': printf("log %f %f=%f\n",a,b,log10(a)); getchar(); return 0; } fprintf(stderr,"falsche Eingabe!\n"); return 1; }
Ich hab auch mal mim Debuger drüber geschaut und nix gefunden (keine Fehler)
-
Original erstellt von quizzmaster:
**Wenn ich mal sagen darf, er hat die math.h nicht gepostet und dass was er geschrieben hat gcc main.c -lm ist doch korrekt.
**Er hat es inzwischen wegeditiert.
-
@quizzmaster
ich habe deine Version ausprobiert, funktioniert aber wieder nicht:[cpp]
gmake all-recursive
gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/root/mathe2«
Making all in mathe2
gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/root/mathe2/mathe2«
/bin/sh ../libtool --mode=link gcc -O2 -O0 -g3 -Wall -o mathe2 main.o
gcc -O2 -O0 -g3 -Wall -o mathe2 main.o
gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/root/mathe2/mathe2«
main.o: In functionmain': **/root/mathe2/mathe2/main.c:24: undefined reference to
log10'**
collect2: ld returned 1 exit status
gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/root/mathe2«
gmake[2]: *** [mathe2] Fehler 1
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all-recursive-am] Fehler 2
*** fehlgeschlagen *** [/cpp][ Dieser Beitrag wurde am 14.03.2003 um 21:49 Uhr von himes editiert. ]
[ Dieser Beitrag wurde am 14.03.2003 um 21:51 Uhr von himes editiert. ]
-
Bei mir gabs keine probleme!
alles hat funktioniert.
Vielleicht steht es nur in der math.h nicht drinne die du hast