Veröffentlicht 16. Oktober 200519 j 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
16. Oktober 200519 j 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.
16. Oktober 200519 j 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; }
16. Oktober 200519 j 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.
16. Oktober 200519 j 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'
18. Oktober 200519 j 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
18. Oktober 200519 j 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.
18. Oktober 200519 j 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
18. Oktober 200519 j Vom "Builder" schreibt er nichts, es könnte sich auch um eine Kommandozeilenversion handeln. Beschwert sich dein Compiler denn über "void main"?
20. Oktober 200519 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.