Informatik Aufgabe
-
sorry wenn wir dich jetzt so dumm angemacht haben aber es gibt so viele Leute die denken sie können hier ihre Hausaufgaben machen lassen (die Susi90s ^^)
Das Problem in deinem programm ist, dass du nicht den vom user eingegbenen Wert abfragst(also mit c=='+' usw) sondern abfragst ob a+b a-b usw ungleich 0 ist (alles außer 0 ist wahr)
-
Kein Thema;-)
bin halt neu und brauch nen Anstoss...
Funktioniert so allerdings nicht.#include<stdio.h>
int main()
{
int a,b,c;
printf("\nGeben Sie eine ganze Zahl ein: ");
scanf("%i",&a);
printf("Geben Sie eine zweite ganze Zahl ein: ");
scanf("%i",&b);
printf("\nGeben Sie ein Rechenzeichen ein,\n");
printf("\"+\" für Addition,\n");
printf("\"-\" für Subtraktion,\n");
printf("\"\" für Multiplikation,\n");
printf("\"/\" für Division:\n");
printf("Rechenzeichen: ");
scanf("%i",&c);
if(c=='+')
printf("Ergebnis: %i\n",ab);
else
if(c=='-')
printf("Ergebnis: %i\n",a-b);
else
if(c=='')
printf("Ergebnis: %i\n",ab);
else
if(c=='/')
printf("Ergebnis: %i\n",a/b);return 0;
}
-
du darfst auch das Rechenzeichen nicht per "%i" einlesen,
da du keine Zahl einlesen willst, sondern ein Zeichen.dafür ist der Platzhalter "%c" gedacht.
also einfach:
printf("Rechenzeichen: "); scanf("%c",&c);
das zusammen mit den bisherigen Änderungen sollte dein Problem lösen
MfG DrakoXP
-
Danke, aber nö, bekomme dann folgende Fehlermeldung:
16: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int *’
Jetzt habe ichs noch so probiert, klappt aber auch nich.
#include<stdio.h>
int main()
{
int a,b;
char c[20];
printf("\nGeben Sie eine ganze Zahl ein: ");
scanf("%i",&a);
printf("Geben Sie eine zweite ganze Zahl ein: ");
scanf("%i",&b);
printf("\nGeben Sie ein Rechenzeichen ein,\n");
printf("\"+\" für Addition,\n");
printf("\"-\" für Subtraktion,\n");
printf("\"\" für Multiplikation,\n");
printf("\"/\" für Division:\n");
printf("Rechenzeichen: ");
scanf("%c",&c);
if(c=='+')
printf("Ergebnis: %i\n",a+b);
else
if(c=='-')
printf("Ergebnis: %i\n",a-b);
else
if(c=='')
printf("Ergebnis: %i\n",a*b);
else
if(c=='/')
printf("Ergebnis: %i\n",a/b);return 0;
}
-
leider funktioniert das nicht auf allen Compilern:
#include<stdio.h> int main() { int a,b; char c; // hier geändert printf("\nGeben Sie eine ganze Zahl ein: "); scanf("%i",&a); printf("Geben Sie eine zweite ganze Zahl ein: "); scanf("%i",&b); printf("\nGeben Sie ein Rechenzeichen ein,\n"); printf("+ für Addition,\n"); printf("- für Subtraktion,\n"); printf("* für Multiplikation,\n"); printf("/ für Division:\n"); printf("Rechenzeichen: "); scanf("%1s", &c); // hier geändert if(c=='+') printf("Ergebnis: %i + %i = %i\n",a , b, a+b); else if(c=='-') printf("Ergebnis: %i\n",a-b); else if(c=='*') printf("Ergebnis: %i\n",a*b); else if(c=='/') printf("Ergebnis: %i\n",a/b); return 0; }
So sieht das mit Code-Tags aus.
Ich weiss jetzt nicht was ihr kennt und/oder vom C-Sprachschatz nutzen dürft.
Wenn es bei euch nicht funktioniert, ist scanf dafür zuständig - der Eingabepuffer wird nicht immer richtig verwaltet.
MfG f.-th.
-
Also erstmal Danke an alle!
Der letzte Eintrag funzt.
Ich verstehe auch alles bis auf den Platzhalter für die Rechenzeichen."scanf("%1s", &c); // hier geändert"
Welche Bedeutung hat das 1s???Gruß, schönen Abend noch und nen angenehmes WE!
-
scanf("%1s", &c); // lese einen String mit der Länge 1 ein
-
Hab noch mal nach gesehen -> der Compiler der keinen Fehler oder eine Warnung heraus gab, aber trotzdem nicht richtig arbeitete, vermisste folgende Zeile im Quelltext:
#include<string.h>
-
DANKE
-
f.-th. schrieb:
leider funktioniert das nicht auf allen Compilern:
scanf("%1s", &c); // hier geändert
Kein Wunder dass es nicht auf allen Compilern funktioniert, ist nämlich undefiniertes Verhalten da in nicht reserviertem Speicherbereich geschrieben wird.
-
Dann machen wir halt mal einen Test.
Nach Einbindung des Headers
#include<string.h>
funktioniert es auf, alphabetisch:
free Bcc 5.5 -> wobei bei Borland-Compilern von damals gar die Position der Leerzeichen bei der Funktion von scanf() manchmal zu beachten war.
digital mars 8.52 -> der brauch nicht mal string.h
gcc 4.4.1 -> der brauch string.hIch hab auch schon andere Standpunkte im Netz gelesen -> Microsoft, ja MS und C
empfielt seine scanf() Varianten, die es als Erweiterung von C bislang nicht in C99 oder so beinhaltet, nur von Mircosoft gibt, zu nutzen. scanf() sei zu vermeiden. Hab keinen MS-Compiler installiert - aber im MSDN kann man das lesen.
Aber was wollt ihr jemand der die ersten Schritte in C machen soll an der Stelle empfehlen
Soll der praktisch erst alle verfügbaren und sich widersprechenden Infos lesen. Welche Schlüsse soll der aus den Widersprüchen ziehen?
So, nu Butter bei die Fische