Ladon Geschrieben 16. Oktober 2005 Geschrieben 16. Oktober 2005 Hallo, ich will eine Fläche berechnen und hab hier folgenden Code: //--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- float laenge = 0, breite = 0, flaeche = 0; float main() { printf("Programm zur Berechnung einer Flaeche\n"); printf("-------------------------------------\n \n"); breite = printf("Bitte geben sie die gewuenschte Breite ein:"); breite = scanf("%f",&breite); laenge = printf("Bitte geben sie nun auch die gewuenschte Laenge ein:"); laenge = scanf("%f",&laenge); printf("laenge*breite"); getch(); return 0; } was habe ich da falsch gemacht? Was kann ich verändern das es funktioniert? Vielen Dank Zitieren
conio Geschrieben 16. Oktober 2005 Geschrieben 16. Oktober 2005 omg. zunächst einmal muss main int zurückgeben. breite = printf("Bitte geben sie die gewuenschte Breite ein:"); hier speicherst du ein int in einer float variable. außerdem wird die in der nächsten zeile überschrieben. also mach nur printf("Bitte geben sie die gewuenschte Breite ein:"); selbiges bei laenge. printf("laenge*breite"); "laenge*breite" ist ein string, du willst aber das ergebnis einer multiplikation (float). deshalb: printf("%f", laenge*breite); mfg. Zitieren
Ladon Geschrieben 16. Oktober 2005 Autor Geschrieben 16. Oktober 2005 hey vielen dank! jetzt hab ich nur das problem das er mir bei printf("%f", laenge*breite); immer den wert 1 zurück gibt. was hab ich da falsch gemacht? float laenge = 0, breite = 0, flaeche = 0; float main(int []) { printf("Programm zur Berechnung einer Flaeche\n"); printf("-------------------------------------\n \n"); printf("Bitte geben sie die gewuenschte Breite ein:"); breite = scanf("%f",&breite); printf("Bitte geben sie nun auch die gewuenschte Laenge ein:"); laenge = scanf("%f",&laenge); printf ("%f",laenge*breite); getch(); return 0; } Zitieren
conio Geschrieben 16. Oktober 2005 Geschrieben 16. Oktober 2005 oh, sorry, das laenge bzw. breite vor scanf gehört natürlich auch weg. scanf schreibt den eingegebenen wert natürlich an die adresse der variablen und gibt dann 1 zurück, deshalb hast du immer 1*1 genommen. mit cin >> laenge wäre das nicht passiert :bimei "main muss int zurückgeben" hast du wohl falsch verstanden: float main(int []) der rückgabetyp ist float, du hast jetzt so ne art int array in der parameterliste hinzugefügt. eigentlich sollte dein compiler nen fehler auswerfen, also imho kann das nicht als richtig erachtet werden. naja, es sollte auf jeden fall so aussehen: int main() so, dann schaut das ganze schonmal sehr gut aus. eine anmerkung hätte ich aber noch, du deklarierst neben laenge und breite auch die variable flaeche, verwendest sie aber nirgends, kannst du also ggf. rausschmeißen. Zitieren
conio Geschrieben 16. Oktober 2005 Geschrieben 16. Oktober 2005 hab jetzt grad nochmal bisschen rumgespielt, sag' mal, welchen compiler verwendest du eigentlich? wenn ich deinen code kompillieren will, mit dem float vor main werde ich schon gewarnt (mingw): test.cpp test.cpp:7: error: `main' must return `int' test.cpp:7: error: return type for `main' changed to `int' Zitieren
Ladon Geschrieben 16. Oktober 2005 Autor Geschrieben 16. Oktober 2005 Hey super!!! Tausend dank! Klappt alles! DANKE! Zitieren
Ladon Geschrieben 16. Oktober 2005 Autor Geschrieben 16. Oktober 2005 ich benutze den C++ Borland 5,0. bei mir klappt alles soweit.... seltsam... Zitieren
stigi Geschrieben 18. Oktober 2005 Geschrieben 18. Oktober 2005 ja jetzt klappts sicherlich, aber uns kannste nicht weis machen das, mit dem ersten code den du gepostet hast dein borland nicht gemeckert hat ich hab auch den borland und der schreit bei jedem kleinen sche** schon aua Zitieren
Klotzkopp Geschrieben 18. Oktober 2005 Geschrieben 18. Oktober 2005 ich hab auch den borland und der schreit bei jedem kleinen sche** schon aua Es gibt nicht "den" Borland. Viele ältere Compiler, gerade solche, die älter als der C++-Standard selbst sind, schlucken so einiges klaglos, was neuere Versionen desselben Herstellers nicht mehr durchgehen lassen. Der Rückgabetyp von main ist da nur ein Beispiel. Zitieren
stigi Geschrieben 18. Oktober 2005 Geschrieben 18. Oktober 2005 da er aber vom borland c++ builder 5.0 spricht hab ich mir mal erspart den ganzen namen hinzuschreiben, hätte man sich ja auch denken können Zitieren
Klotzkopp Geschrieben 18. Oktober 2005 Geschrieben 18. Oktober 2005 Vom "Builder" schreibt er nichts, es könnte sich auch um eine Kommandozeilenversion handeln. Beschwert sich dein Compiler denn über "void main"? Zitieren
jma Geschrieben 20. Oktober 2005 Geschrieben 20. Oktober 2005 mal mein senf dazugibt man kann auch einstellen welche warnungen ausgegeben werden sollen bzw ob warnungen überhaupt angezeigt werden sollen. und bei float --> int , dürfte nur dieWarnung kommen das möglicherweise der wert abgeschnitten wird. jma Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.