2 Rückgabewerte einer Funktion
-
Dann würds Sinn machen, den int drinzulassen, und stattdessen vor dem Aufruf der Funktion das Volumen eingeben und rechne_optimal mit dem neuen Parameter aufrufen.
Und auch die forward declaration entsprechend anzupassen. Manchmal staun ich echt, was so ein Compiler alles durchgehen lässt ... Welchen benutzt du?
-
visual studio 2010
-
Wie sieht das im programm aus ich weiß ich nerve aber bitte poste mir die gute version ich sehe nichts mehr .......
-
Du weisst wie man Eingaben mit scanf macht (siehe die eingabe()-Methode) und du weisst wie man Parameter übergibt (siehe ausgabe()-Methode und vor allem deren Aufruf).
Probiers mal selbst, ich denke das schaffst du locker.
-
float rechne_optimal() /*Optimale Material Vebrauch*/ { float radius=1; float volumen1; float oberflaeche; float oberflaeche2; float const pi=3.14159265; volumen1=volumen; printf("Bitte geben Sie das Volumen an"); scanf("%f", &volumen1); fflush(stdin); do { oberflaeche=2*pi*radius*radius+2*pi*radius*(volumen1/(pi*radius*radius)); radius=radius+0.01; oberflaeche2=2*pi*radius*radius+2*pi*radius*(volumen1/(pi*radius*radius)); } while(oberflaeche>=oberflaeche2); return(radius); } void ausgabe(float erg) /*Ausgabefunktion*/ { printf("\n\nDas Ergebnis ist: %f\n\n", erg); /*Ergebnisausgabe*/ }
SO? geht auch nicht bei mir
-
Was gibst du denn für ein Volumen ein?
-
kann ich frei auswählen aber er starte das programm nicht bei mir:
1> Pr13.cpp
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(59): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(82): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(92): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(95): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(98): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(107): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(110): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(119): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(122): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(125): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(128): warning C4244: 'return': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(134): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(137): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(140): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(143): warning C4244: 'return': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(152): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(153): warning C4244: '=': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(157): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): Siehe Deklaration von 'scanf'
1>c:\users\burak\documents\visual studio 2010\projects\praktikum13\praktikum13\pr13.cpp(165): warning C4244: '=': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>Pr13.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""float __cdecl rechne_optimal(void)" (?rechne_optimal@@YAMXZ)" in Funktion "_main".
1>C:\Users\Burak\documents\visual studio 2010\Projects\Praktikum13\Debug\Praktikum13.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
-
Ich habe deine Berechnungen nicht wirklich verstanden, aber in etwa so müsste es gehen:
-
ja genau aber jetzt gibt er mir nur einen wert und das ist der radius aber die höhe gibt er nicht zurück, aber das programm starte nicht bei mir....
-
Du berechnest ja auch nur den Radius.
Auch ist das Ergebnis in dem Beispiel von Wutz falsch.
-
generell getchar
-
Jetzt möchte ich das er mir beim 5 case unten in der Berechnung den wert zurück gibt aber dies macht er nicht: und zwar soll er diese rechnung zurückgeben bei float rechne_optimal(int volumen)!!!
#include<stdio.h> #include<math.h> /*Prototyp*/ int eingabe(); float volumen(); float grundflaeche(); float mantelflaeche(); float oberflaeche(); float rechne_optimal(); void ausgabe(float erg); int main(void) /*Mainfunktion*/ { int auswahl, antwort; /*Variablen deklarieren*/ int radius; int volumen1; float ergebnis; do /*Programm Schleife*/ { /*auswahl bestimmen*/ do { auswahl=eingabe(); antwort=0; switch(auswahl) { /*Grundfläche*/ case 1: ergebnis=grundflaeche(); break; /*Mantelfläche*/ case 2: ergebnis=mantelflaeche(); break; /*Oberfläche*/ case 3: ergebnis=oberflaeche(); break; /*Volumen*/ case 4: ergebnis=volumen(); break; case 5: ergebnis=rechne_optimal(); /*Optimal Berechnung des Materialeinsatzes*/ break; default: printf("\nSie haben eine falsche Eingabe gemacht\n\n"); /*Fehleingabe abfangen bei ungültiger Zahl*/ antwort=1; break; } } while(antwort==1); ausgabe(ergebnis); /*Ausgabefunktion*/ printf("\n\nWollen Sie das Programm erneut starten? \n1: Ja!\n0: Nein!"); /*Neustarteingabe*/ scanf("%i", &antwort); fflush(stdin); } while(antwort==1); } /*Funktionen*/ int eingabe() { int eingabe; printf("\n\nBitte suchen Sie sich aus was Sie berechnen moechten\n\n"); printf("Fuer Grundflaeche die\t\t\t[1]\n"); printf("Fuer Mantelflaeche die\t\t\t[2]\n"); printf("Fuer Oberflaeche die\t\t\t[3]\n"); printf("Fuer Volumen die\t\t\t[4]\n"); printf("Fuer Minimal Material verbaucht die \t[5]\n"); scanf("%i",&eingabe); fflush(stdin); return(eingabe); } float volumen() /*Volumenberechnung*/ { float hoehe, radius; /*Variablendeklaration*/ float const pi=3.14159265; printf("\nBitte geben Sie die Hoehe an:\t"); /*Eingabe Höhe*/ scanf("%f", &hoehe); fflush(stdin); printf("\nBitte geben Sie den Radius an:\t"); /*Eingabe Radius*/ scanf("%f", &radius); fflush(stdin); return(radius*radius*pi*hoehe); } float grundflaeche() /*Grundflächenberechnung*/ { float radius; /*Variablendeklaration*/ float const pi=3.14159265; printf("\nBitte geben Sie den Radius an:\t"); /*Eingabe Radius*/ scanf("%f", &radius); fflush(stdin); return(radius*radius*pi); } float mantelflaeche() /*Mantelflächenberechnung*/ { float hoehe, radius; /*Variablendeklaration*/ float const pi=3.14159265; printf("\nBitte geben Sie die Hoehe an:\t"); /*Eingabe Höhe*/ scanf("%f", &hoehe); fflush(stdin); printf("\nBitte geben Sie den Radius an:\t"); /*Eingabe Radius*/ scanf("%f", &radius); fflush(stdin); return(2.0*radius*pi*hoehe); } float oberflaeche() /*Oberflächenberechnung*/ { float hoehe, radius; /*Variablendeklaration*/ float const pi=3.14159265; printf("\nBitte geben Sie die Hoehe an:\t"); /*Eingabe Höhe*/ scanf("%f", &hoehe); fflush(stdin); printf("\nBitte geben Sie den Radius an:\t"); /*Eingabe Radius*/ scanf("%f", &radius); fflush(stdin); return(2.0*radius*pi*hoehe+2*radius*radius*pi); } float rechne_optimal(int volumen) /*Optimale Material Vebrauch*/ { float radius=1; float volumen1; float oberflaeche; float oberflaeche2; float const pi=3.14159265; volumen1=volumen; printf("Bitte geben Sie das Volumen an"); scanf("%f", &volumen1); fflush(stdin); do { oberflaeche=2*pi*radius*radius+2*pi*radius*(volumen1/(pi*radius*radius)); radius=radius+0.01; oberflaeche2=2*pi*radius*radius+2*pi*radius*(volumen1/(pi*radius*radius)); } while(oberflaeche>=oberflaeche2); return(radius); } void ausgabe(float erg) /*Ausgabefunktion*/ { printf("\n\nDas Ergebnis ist: %f\n\n", erg); /*Ergebnisausgabe*/ }
-
float rechne_optimal(int volumen) // ist aber anders deklariert, Zeile 11: float rechne_optimal(); /*Optimale Material Vebrauch*/ { float radius=1; // ist dieser Startwert sinnvoll? ...}
Was passiert eigentlich genau?
Stürzt da Programmab oder reagiert es nicht mehr?
Welchen Wert gibst du ein? (Die Zahlen will ich wissen)