Mainfunktion
-
Hallo....
Hab ein kleineres Problem, ich hab bei Galileo Computing kapitel 11 gelesen (Funktionen).
Jetzt habe ich versucht mir einen Taschenrechner mit der Funktion Addition zu programmieren und habe leider ein problem...#include "stdafx.h" #include "stdlib.h" void Addition() { Ergebnis = Zahl1 + Zahl2; } int _tmain(int argc, _TCHAR* argv[]) { int Zahl1 = 5, Zahl2 = 7, Ergebnis = 0; Addition(); system ("Pause"); return 0; }
Hier die Fehlermeldung:
1>------ Erstellen gestartet: Projekt: Mainfunktion, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>Mainfunktion.cpp 1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\mainfunktion\mainfunktion\mainfunktion.cpp(9) : error C2065: 'Ergebnis': nichtdeklarierter Bezeichner 1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\mainfunktion\mainfunktion\mainfunktion.cpp(9) : error C2065: 'Zahl1': nichtdeklarierter Bezeichner 1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\mainfunktion\mainfunktion\mainfunktion.cpp(9) : error C2065: 'Zahl2': nichtdeklarierter Bezeichner 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\mamar\Eigene Dateien\Visual Studio 2005\Projects\Mainfunktion\Mainfunktion\Debug\BuildLog.htm" gespeichert. 1>Mainfunktion - 3 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Komme einfach nicht mehr weiter...Wie kann ich die drei Variablen deklarieren??
mfg 08mmarte
-
du musst deiner funktion Addition() die zwei variablen uebergeben, die addiert werden sollen:
void Addition(int zahl1, int zahl2)
und in der main funktion uebergibst du dann die zwei variablen:
Addition(zahl1, zahl2);
du hast die variable Ergebnis in der main funktion deklariert, willst sie aber in der funktion Addition benutzen... deklarier sie mal in der Addition-funktion.
-
Main wird ja zuerst gestartet.
Von dort rufst du die funktion Addition() auf.Frage: Woher soll Addition() wissen, welche Werte es addieren soll?
Antwort: du musst die Werte Zahl1 und Zahl2 übergeben.Frage: Was bringt dir die Funktion Addtition()?
Antwort: Sie soll das ausgerechnete Ergebnis zurückgeben. Macht es bei dir aber nicht.Erledige mal das und komm dann wieder
-
Liege ich hiermit richtig?
#include "stdafx.h" void Addition(int Zahl1, int Zahl2, int Ergebnis) { Ergebnis = Zahl1 + Zahl2; } int _tmain(int argc, _TCHAR* argv[]) { int Zahl1 = 5, Zahl2 = 7, Ergebnis = 0; Addition(Zahl1, Zahl2, Ergebnis); printf ("%d", Ergebnis); printf ("\n"); return 0; }
Es git auch keine Fehlermeldung mehr aus..
-
Sieht schon besser aus! Aber warum fragst du, ob du richtig liegst? Überprüfe doch einfach die Ausgabe deines Programms? Wird das Programm problemlos kompiliert und gelinkt und ist die Ausgabe korrekt, dann kannst du dir ziemlich sicher sein, alles richtig gemacht zu haben.
-
Es funktioniert aber es gibt mir immer 0 aus....
-
08mmarte_ schrieb:
Es funktioniert aber es gibt mir immer 0 aus....
Ja, weil du Ergebnis by-Value übergibst! Du musst die Adresse von Ergebnis an deine Funktion übergeben, damit nicht eine Kopie der Variable mit deinem Wert gefüllt wird, sondern das Original. das macht man mit dem Adressoperator (&). Schreib in die Funktionsdeklaration "int *Ergebnis" und beim Aufruf "&Ergebnis".
-
Man muss ja nicht gleich mit Pointern arbeiten
int Addition(int, int); /* Prototyp */ int Addition(int Zahl1, int Zahl2) { int Ergebnis = 0; Ergebnis = Zahl1 + Zahl2; return Ergebnis; /* Wie wärs mit einer return Anweisung? */ } int _tmain(int argc, _TCHAR* argv[]) { int Zahl1 = 5, Zahl2 = 7, Ergebnis = 0; Ergebnis = Addition(Zahl1, Zahl2); printf ("%d", Ergebnis); printf ("\n"); return 0; }
-
Oder so...
Um die Pointer kommt er früher oder später aber nicht herum!
-
Hab Hilfe von Bonsaibesitzer bekommen (sitzt vier Meter neben mir :p )...
int Addition(int Zahl1, int Zahl2) { return Zahl1 + Zahl2; } ... Ergebnis = Addition(Zahl1, Zahl2);
-
Zu Beginn so simpel wie möglich. Später kommen dann Pointer und der ganze Kram... freut euch
-
Bonsaibesitzer schrieb:
Zu Beginn so simpel wie möglich. Später kommen dann Pointer und der ganze Kram... freut euch
Bin gespannt, wann 08mmarte_ templates lernt!
-
matze_ kannst du mir mal helfen??
Ich kann mich nicht mehr anmelden, weiss nicht wieso, hab mich neu registriert und es geht immer noch nicht.
Ich habe das breits in das Forum Allgemienes zu Magazin geschrieben, wurde dann verschobe, nach Forentechnik.
In der Forentechnik kann ich nichts mehr schreiben weil ich nicht angemolden bin, und um einem moderator zu schreiben müsste ich angemlden sein,
aber das geht ja nicht.Könntest du mal in meinem Name ein Mail an einen Moderator schreiben?
mfg 08mmarte
-
Hat sich erledigt funktioniert wieder....
-
08mmarte schrieb:
Hat sich erledigt funktioniert wieder....
Ach sorry, wollte ich nach der Mittagspause machen (du hattest dich 1 Minute davor gemeldet) und habs dann vergessen...
-
Egal...funktioniert ja wieder...