Informatik Aufgabe
-
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ändertKein 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
