Problem mit 2 Funktionen?!
-
Sorry!
Fehlertext:Building Versuch08.12funkt.obj.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(93): warning #2027: Missing prototype for 'berechnungPreiszeile'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(98): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(98): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(96): warning #2114: Local 'summe' is not referenced.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(101): warning #2027: Missing prototype for 'berechnungSumme'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2048: Undeclared identifier 'summe'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2048: Undeclared identifier 'anzahl'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2140: Type error in argument 1 to '__stod'; found 'int', expected 'const char *'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2048: Undeclared identifier 'preis'.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2140: Type error in argument 1 to '__stod'; found 'int', expected 'const char *'.
*** Error code: 1 ***
Done.
-
Nur so als Anmerkung... warum schiebst du die wiederholende Funktion nicht in eine Schleife? Damit kriegt man keinen Dejavu beim durchlesen.
-
Dein Code:
void berechnungSumme() { char anzahl; char preis; float summe; summe = summe + atof(anzahl) * atof(preis); printf("rechnung: %.2f \n", summe); }
Du deklarierst hier eine char-Variable (das ist ein einzelnes Zeichen, kein String!), der du keinen Wert zuweist (Fehler 1), und übergibst sie an atof. Die Funktion benötigt aber einen Zeiger auf char (char*), also auf einen String (Fehler 2).
Richtiger wäre z.B. sowas hier:
char *anzahl="123"; float res=atof(anzahl);
EDIT: Außerdem darfst du nicht summe=summe+... rechnen, wenn summe noch gar keinen Wert zugewiesen bekommen hat! Da steht dann irgendwas drinnen (was an der Stelle im Speicher halt grad so rumschwirrt). Du musst deine Variablen mit einem Wert initialisieren bei solchen Fällen (oder am besten einfach immer, dann geht auch nix schief).
-
Das mit der Schleife, wollte ich als nächstes Problem ansprechen, die kriege ich auch nicht hin, genauso wie die Abbruchbedingung. Am Schluß kommt ";;", bzw keine Daten mehr.
So hat die Schleife bei mir ausgesehen:
for(i=0; i<=eingabe; i++) )
-
ich darf leider keine Zeiger benutzen, bis auf den einen zum "Datei_Öffnen"
-
Ein paar grundlegende Tipps für den Einstieg:
- Mach dich vertraut mit den Basics dieser Programmiersprache. Nur durch Trial&Error kommt man leider nicht weit. Man muss wohl oder übel auch wenigstens mal ein paar Seiten eines Buchs/Tutorials lesen und die Grundlagen lernen (Datentypen, Kontrollstrukturen usw.). Du musst halt wissen, was der Unterschied zwischen char und char* ist, wo eine Variable sichtbar ist und wo nicht, wie Parameterübergaben funktionieren, was ein Cast ist usw.
- Vergiss dieses Monster von Programm erstmal und lerne anhand von ganz kleinen, überschaubaren 'Progrämmchen'. Du wirst sich nur unnötig verwirrt durch die Größe (und die Redundanz) dieses Quellcodes.
- Arbeite an deiner Einrückung. Nur mit gut formatiertem Code behält man den Überblick.
-
danzriba schrieb:
ich darf leider keine Zeiger benutzen, bis auf den einen zum "Datei_Öffnen"
In C gibt es keine 'richtigen' Strings, sondern nur char-Arrays. Wenn du die benutzen willst, musst du darauf zeigen. Falls das deinem Lehrer besser gefällt, könntest du einen String auch so deklarieren:
char myString[]="hallo welt!";
Nach Übergabe an eine Funktion arbeitest aber doch wieder mit Zeigern...
-
Habe es mit zwei Büchern versucht, jedoch bin ich jetzt mit Trial&Error und Nachschlagen am weitesten gekommen und mir ist vieles klar geworden. Ich sehe auch, das mir die Basics fehlen, aber davor waren sie für mich nicht erkennbar. Werde das in den Ferien nachholen, da danach die nächste Belegarbeit kommt
und ich jetzt sehe wo ich Nachholbedarf habe. Das Problem ist, dass ich dieses Programm bis Dienstag fertig haben muß und ich sie nicht einfach von jemandem abschreiben will.
Danke für die Hilfe soweit.
-
Noch ganz kurz mal was Konkretes zu deinen Fehlern, vielleicht hilft's dir ja in Zukunft beim Lesen von Fehlermeldungen (das ist am Anfang immer schwer):
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(93): warning #2027: Missing prototype for 'berechnungPreiszeile'.
Selbsterklärend: der Funktionsprototyp fehlt offenbar (was nicht immer schlimm ist).
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(97): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(98): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(98): error #2140: Type error in argument 1 to '__stod'; found 'char', expected 'const char *'.
Wurde schon erklärt. Du übergibst einfach den falschen Typen. Die Funktion braucht einen Zeiger auf char (hier also auf einen String).
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(96): warning #2114: Local 'summe' is not referenced.
Du deklarierst eine Variable summe, die aber gar nicht verwendet wird. Ein typische Code-Leiche.
C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2048: Undeclared identifier 'summe'. C:\Dokumente und Einstellungen\Dan Zan\Desktop\Versuch08.12funkt.c(102): error #2048: Undeclared identifier 'anzahl'.
Du versuchst, Variablen zu benutzen, die in diesem Scope gar nicht bekannt sind, einfach weil sie nicht deklariert wurden. Eine Variable ist immer nur innerhalb des Scopes sicht- und verfügbar, in dem sie deklariert wurde (mit Ausnahme von globalen Variablen natürlich).
Wenn ich heute Abend Zeit habe, schaue ich mir auch gerne noch an, wie deine Schleife formuliert werden muss, um diese ganze Redundanz aus dem Code zu bekommen (wenn du das also zwischenzeitlich löst, sag bitte bescheid).
-
Danke schön für die Tipps
Wenn du mir noch etwas zu der Schleife schicken könntest wäre toll.