Zahlen addieren durch Funktion
-
Hallo,
ich hänge gerade an einem Problem.
Möchte ein kleines Programm schreiben, dass zwei beliebige Zahlen addiert mittels einer Funktion. Mein Compiler hat Probleme mit der Rechnung in der Funktion, was mach ich da falsch??void summe() { printf("\nDas Ergebnis lautet: "%i", zahl1 + "%i", zahl2"); } void main() { int zahl1; int zahl2; printf("\nBitte erste Zahl eingeben: "); scanf("%i", zahl1); printf("\nBitte zweite Zahl eingeben: "); scanf("%i", zahl2); summe(); getchar(); return 0; }
Freue mich über Hilfe, viele Grüße!
-
Du kannst einen Formatstring nur in das erste Argument packen. Die anderen sind dann ganz normale ints, chars oder was auch immer. Also:
printf("... %i...\n", zahl1 + zahl2);
=>
... 7...\n
Außerdem musst du mit den Anführungszeichen aufpassen.
Wenn du anführungszeichen setzten willst, musst du die z.B. escapen:
printf("... \"%i\"...\"%i\"\n", zahl1, zahl2);
=>
... "3"..."4"\n
('\n' ist natürlich unsichtbar^^)
-
Du machst überhaupt keine Rechnung. Deine Funktion summe() müsste eigentlich 2 Paremter bekommen : int a und int b also : summe( int a, int b ) denn nur so kann sie wissen, aus welchen 2 Zahlen sie die Summe bilden soll. Aussehen würde das dann so :
int summe( int a, int b ) { return ( a+b ); } int main() { // Zahlen einlesen printf( " Summe ist : %d \n", summe( zahl1, zahl2 ) ); return 0; }
-
Hier mal ein Link:
http://www.cplusplus.com/reference/clibrary/cstdio/scanf/schau mal bei dir wie es da aussieht.
Die anderen Sachen wurden ja schon angesprochen.
void summe() { printf("\nDas Ergebnis lautet: "%i", zahl1 + "%i", zahl2"); // siehe Beitrag vorher } void main() // wieso void ??? { int zahl1; int zahl2; printf("\nBitte erste Zahl eingeben: "); scanf("%i", zahl1); // schau in den Link printf("\nBitte zweite Zahl eingeben: "); scanf("%i", zahl2); // auch Link summe(); getchar(); return 0; }
-
Schau mehr her, so sollte es funktionieren:
#include <stdio.h> int zahl1; int zahl2; void summe() { printf("\nDas Ergebnis lautet: %i", zahl1 + zahl2); } int main() { printf("\nBitte erste Zahl eingeben: "); scanf("%i", &zahl1); printf("\nBitte zweite Zahl eingeben: "); scanf("%i", &zahl2); summe(); getchar(); return 0; }
Gruß Chris
-
Funktionieren wahrscheinlich ja - aber warum globale Variablen, wenn es einfach anders geht?
-
Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.
EDIT: hier noch mal die saubere Lösung...
#include <stdio.h> void summe(int zahl1, int zahl2) { printf("\nDas Ergebnis lautet: %i", zahl1 + zahl2); } int main() { int zahl1, zahl2; printf("\nBitte erste Zahl eingeben: "); scanf("%i", &zahl1); printf("\nBitte zweite Zahl eingeben: "); scanf("%i", &zahl2); summe(zahl1, zahl2); getchar(); return 0; }
-
cfoobar schrieb:
Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.
EDIT: hier noch mal die saubere Lösung...
Sauber? Nö!
Ein/Ausgabe und Funktionen trennen, also int summe(int a, int b) mit returnvalue wär' angesagt.
-
Ok ok, das wär dann schon klinisch sauber...
EDIT:...und dann könnte man noch die Eingaben prüfen und sichere Varianten von printf etc. verwenden wie vsnprintf_s und so weiter und so fort... :p
-
cfoobar schrieb:
vsnprintf_s
Ist kein standard C :p
-
cooky451 schrieb:
cfoobar schrieb:
vsnprintf_s
Ist kein standard C :p
Warum hatte ich das geahnt?
-
pointercrash() schrieb:
cfoobar schrieb:
Ich wollte so nahe an seinem Originalcode bleiben wie es geht. Du hast aber Recht, eine Summenfunktion mit Argumenten wäre hier als Lösung sauberer gewesen.
EDIT: hier noch mal die saubere Lösung...
Sauber? Nö!
Ein/Ausgabe und Funktionen trennen, also int summe(int a, int b) mit returnvalue wär' angesagt.Richtig, dann wären wir bei meinem Code und müssten das ganze nicht nochmal 5-fach reposten.