Mein erstes Programm, was ist falsch ??
-
high_med schrieb:
#include <iostream> using namespace std; int main() { int* a; // a ist ein zeiger, er ist aber noch tot. du hast ihm noch keinen speicherplatz zugewiesen int b = 2; cout << "Bitte geben Sie eine Zahl ein: "; cin >> a; // ooops, du versuchst die adresse auf die a zeigt zu ändern. if (a % b == 1) // die adresse von a modulo den wert von b :) { nteil(); } else { teil(); // teil erwartet ein int* } return 0; } void nteil() { cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n"; } void teil(int* zeiga) { cout << "\nDas Ergebnis der Division lautet: " << zeiga/2 << "\n"; }
ich würds so machen
#include <iostream> using namespace std; void nteil() { cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n"; } void teil(int a) { cout << "\nDas Ergebnis der Division lautet: " << a << "\n"; } int main() { int a; const int b = 2; cout << "Bitte geben Sie eine Zahl ein: "; cin >> a; if (a % b == 1) nteil(); else teil(a/b); return 0; }
-
@audacia: so a schmäh!! lass doch den zeiger weg -.-
-
Du mußt die funktionen schon vorher bekannt machen wenn du sie in main aufrufen willst. außerdem rufst du teil(); auf obwohl du festgelegt hast, daß die funktion ein argument bekommen soll.
-
Danke erstmal für die superschnellen Antworten...
Habe den unteren Code kopiert, tritt aber beim Compilieren folgende Meldungen auf...,
was heisst das ??Kompilierung läuft...
Gerade oder ungerade.cpp
C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Gerade oder ungerade.cpp(11) : warning C4700: Lokale Variable 'a' wurde ohne Initialisierung verwendet
Linker-Vorgang läuft...
Gerade oder ungerade.obj : error LNK2001: Nichtaufgeloestes externes Symbol "void __cdecl teil(void)" (?teil@@YAXXZ)
Debug/Gerade oder ungerade.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.Gerade oder ungerade.exe - 2 Fehler, 1 Warnung(en)
*Sorry wenn ich nerv*
-
audacia schrieb:
[cpp]
#include <iostream>
using namespace std;int main()
{
int* a;
int b = 2;
void nteil(), teil();
cout << "Bitte geben Sie eine Zahl ein: ";
cin >> *****a; // der Ausdruck *a dereferenziert a, d. h., greift darauf zu, worauf a zeigtif (*****a % b == 1)
{
nteil();
}
else
{
teil();
}
return 0;
}void nteil()
{
cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n";
}void teil(int* zeiga)
{
cout << "\nDas Ergebnis der Division lautet: " << *****zeiga / 2 << "\n";
}
[/cpp]?????
was ist dennvoid nteil(), teil();
ausserdem hast du vergessen a = new int zu machen...
-
... void nteil(); ... teil(); ...void teil(int* zeiga) ...
das geht schief, wenn du deiner funktion einen integer übergeben möchtest dann deklariere es auch so und rufe es so auf:
... void nteil(int); ... teil(deine_zahl); ...void teil(int zeiga) ...
-
Boah, borg kann schon Anfängeraufgaben lösen
-
Michael E. schrieb:
Boah, borg kann schon Anfängeraufgaben lösen
ihr werdet alle staunen wenn meine wpc lösung die schnellste ist
-
Sorry, immer noch nicht
#include <iostream> using namespace std; int main() { int* a; a = new int; int b = 2; void nteil(), teil(); cout << "Bitte geben Sie eine Zahl ein: "; cin >> *a; // der Ausdruck *a dereferenziert a, d. h., greift darauf zu, worauf a zeigt if (*a % b == 1) { nteil(); } else { teil(); } return 0; } void nteil() { cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n"; } void teil(int* zeiga) { cout << "\nDas Ergebnis der Division lautet: " << *zeiga / 2 << "\n"; }
lässt sich noch nicht ausführen..
-
da sind ja auch 2 dicke fehler drin, nimm meins.
oder mach das "void nteil(), teil();" raus und informier dich über pointer.
-
borg schrieb:
Michael E. schrieb:
Boah, borg kann schon Anfängeraufgaben lösen
ihr werdet alle staunen wenn meine wpc lösung die schnellste ist
Es geht einfach drum, dass nicht gefragt ist, wie dus machen würdest. Du hast außerdem nur ein klein bisschen was geändert, sodass man noch nicht mal was von ner anderen Vorgehensweise lernen kann.
-
borg schrieb:
da sind ja auch 2 dicke fehler drin, nimm meins.
Tus nicht. Da ist der Lerneffekt = 0.
-
high_med schrieb:
...lässt sich noch nicht ausführen..
ja natürlich nicht, siehe meinen letzten beitrag
-
Michael E. schrieb:
borg schrieb:
Michael E. schrieb:
Boah, borg kann schon Anfängeraufgaben lösen
ihr werdet alle staunen wenn meine wpc lösung die schnellste ist
Es geht einfach drum, dass nicht gefragt ist, wie dus machen würdest. Du hast außerdem nur ein klein bisschen was geändert, sodass man noch nicht mal was von ner anderen Vorgehensweise lernen kann.
Lol, MichaelE. entscheidet was gefragt ist und was nicht
-
No comment.
-
Ich nerve mich ja schon selber, Ihr entschuldigt...
Die Fehler:
Gerade oder ungerade.obj : error LNK2001: Nichtaufgeloestes externes Symbol "void __cdecl teil(void)" (?teil@@YAXXZ)
Debug/Gerade oder ungerade.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.Gerade oder ungerade.exe - 2 Fehler, 0 Warnung(en)
#include <iostream> using namespace std; int main() { int* a; a = new int; int b = 2; void nteil(), teil(); cout << "Bitte geben Sie eine Zahl ein: "; cin >> *a; // der Ausdruck *a dereferenziert a, d. h., greift darauf zu, worauf a zeigt if (*a % b == 1) { void nteil(); } else { teil(); } return 0; } void nteil() { cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n"; } void teil(int zeiga) { cout << "\nDas Ergebnis der Division lautet: " << zeiga / 2 << "\n"; }
Ach Menno....
-
Du kannst eine Funktion nicht in einer anderen deklarieren, das musst du vor main() machen.
Ich nerve mich ja schon selber, Ihr entschuldigt...
Frag soviel du willst und noch mehr. Sonst lernt man ja nie
-
Also gut habe jetzt das void nteil(), teil();
vor int main()geschoben, aber die Fehler bleiben noch immer...
#include <iostream> using namespace std; void nteil(), teil(); int main() { int* a; a = new int; int b = 2; cout << "Bitte geben Sie eine Zahl ein: "; cin >> *a; // der Ausdruck *a dereferenziert a, d. h., greift darauf zu, worauf a zeigt if (*a % b == 1) { nteil(); } else { teil(); } return 0; } void nteil() { cout << "\nDie von Ihnen eingegebene Zahl ist nicht durch 2 teilbar!\n"; } void teil(int zeiga) { cout << "\nDas Ergebnis der Division lautet: " << zeiga / 2 << "\n"; }
und ist das hier nicht irgendwie doppelt gemoppelt ??
int* a; a = new int;
kommt mir vor wie eine doppeldeklaration oder sowas...
oder irre ich mich ? (hier auch schon wieder ?):)
-
Michael E. schrieb:
Es geht einfach drum, dass nicht gefragt ist, wie dus machen würdest. Du hast außerdem nur ein klein bisschen was geändert, sodass man noch nicht mal was von ner anderen Vorgehensweise lernen kann.
jetzt tust du mir aber unrecht, ich hab in meinem ersten posting an seinen code kommentare dabei geschrieben was er falsch gemacht hat.
-
ahhhhhhhhhh, wie oft den noch?
die deklaration für diese funktion:
void teil(int zeiga)
muß auch dem entsprechend aussehen:
void teil(int);
frag soviel du willst, aber nicht immer das gleiche