Eigene Funktionen schreiben
-
Hallo,
ich hab folgendes Programm anhand eines Buches geschrieben, aber der Compiler wirft mir 5 Fehler und 5 Warnungen raus. Ich hab es mehrfach überprüft, aber ich hab es so geschrieben wie es im Buch stand. Er hat bei Zeile 21 (void ergebnis_ber(float e...), 23, 24 und der ersten und letzten gemoppert. Und ich weiß nicht wieso./* Funktionsaufruf mit Wertübergabe */
#include <stdio.h>
#include <math.h>float pi = 3.1415;
float kreis_area(float d)
{
return (d*d*pi/4);
}float kreis_durchmesser(float flaeche)
{
return sqrt(4 * flaeche / pi);float kreis_umfang(float d)
{
return d * pi;
}void ergebnis_ber(float erg. int welche)
{
if(welche == 1)
printf("Kreisflaeche : %.2f\n",erg);
else if(welche == 2)
printf("Kreisdurchmesser : &.2f\n",erg);
else if(welche == 3)
printf("Kreisflaeche : %.2f\n",erg);
else
printf("Fehler bei Aufruf der Funktion\n");
}int main()
{
int abfrage;
float ergebnis, var;do{
printf("Welche Berechnung wollen Sie durchfuehren?\n\n");
printf("<1> Kreisflaeche\n");
printf("<2> Kreisdurchmesser\n");
printf("<3> Kreisumfang\n\n");
printf("<4> Programm beenden\n\n");
printf("Ihre Auswahl < >\b\b");
scanf("%d",&abfrage);switch(abfrage)
{
case 1 : printf("Durchmesser : ");
scanf("%f",&var);
ergebnis=kreis_area(var);
ergebnis_ber(ergebnis, abfrage);
break;
case 2 : printf("Flaeche : ");
scanf("%f",&var);
ergebnis=kreis_durchmesser(var);
ergebnis_ber(ergebnis, abfrage);
break;
case 3 : printf("Durchmesser : ");
scanf("%f",&var);
ergebnis=kreis_umfang(var);
ergebnis_ber(ergebnis, abfrage);
break;
case 4 : printf("Programmende\n");
break;
default : printf("Unbekannte Eingabe\n");
}
}while(abfrage!=4);
return 0;}
-
#include <stdio.h> #include <math.h> float pi = 3.1415; float kreis_area(float d) { return (d*d*pi/4); } float kreis_durchmesser(float flaeche) { return sqrt(4 * flaeche / pi); float kreis_umfang(float d) { return d * pi; } } /* <--- Funktion wieder zumachen*/ void ergebnis_ber(float erg, /* <--- Komma statt Punkt */ int welche) { if(welche == 1) printf("Kreisflaeche : %.2f\n", erg); else if(welche == 2) printf("Kreisdurchmesser : &.2f\n",erg); else if(welche == 3) printf("Kreisflaeche : %.2f\n",erg); else printf("Fehler bei Aufruf der Funktion\n"); } int main() { int abfrage; float ergebnis, var; do { printf("Welche Berechnung wollen Sie durchfuehren?\n\n"); printf("<1> Kreisflaeche\n"); printf("<2> Kreisdurchmesser\n"); printf("<3> Kreisumfang\n\n"); printf("<4> Programm beenden\n\n"); printf("Ihre Auswahl < >\b\b"); scanf("%d",&abfrage); switch(abfrage) { case 1 : printf("Durchmesser : "); scanf("%f",&var); ergebnis=kreis_area(var); ergebnis_ber(ergebnis, abfrage); break; case 2 : printf("Flaeche : "); scanf("%f",&var); ergebnis=kreis_durchmesser(var); ergebnis_ber(ergebnis, abfrage); break; case 3 : printf("Durchmesser : "); scanf("%f",&var); ergebnis=kreis_umfang(var); ergebnis_ber(ergebnis, abfrage); break; case 4 : printf("Programmende\n"); break; default : printf("Unbekannte Eingabe\n"); } } while(abfrage!=4); return 0; }
Der Rest sind Folgefehler. Gewöhn dir an, den Code vernünftig einzurücken, dann passieren solche Fehler wie der mit der nicht abgeschlossenen Funktion sehr viel seltener. Und was das Forum angeht - cpp-tags machen den Code lesbarer.
-
void ergebnis_ber(float erg. int welche)
ich glaube nicht, dass da ein punkt reingehört
-
Ja danke, das mit dem Punkt war eigen Blödheit, hab ich einfach übersehen. Jetzt hat er nur noch 1 Fehler angezeigt. Aber mit der Klmmer kann nicht stimmen, danach hat ich dann 2 Fehler, habs also rückgängig gemacht. Hab jetzt noch folgenden Fehler:
C:\C++\Projekte\func2\func2.c(16) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type' (Bei: float kreis_umfang(float d))
-
#include <stdio.h> #include <math.h> float pi = 3.1415; float kreis_area(float d) { return (d*d*pi/4); } float kreis_durchmesser(float flaeche) { return sqrt(4 * flaeche / pi); } /* <--- hier muss die funktion zugehen*/ float kreis_umfang(float d) { return d * pi; } void ergebnis_ber(float erg, int welche) { if(welche == 1) printf("Kreisflaeche : %.2f\n", erg); else if(welche == 2) printf("Kreisdurchmesser : &.2f\n",erg); else if(welche == 3) printf("Kreisflaeche : %.2f\n",erg); else printf("Fehler bei Aufruf der Funktion\n"); } int main() { int abfrage; float ergebnis, var; do { printf("Welche Berechnung wollen Sie durchfuehren?\n\n"); printf("<1> Kreisflaeche\n"); printf("<2> Kreisdurchmesser\n"); printf("<3> Kreisumfang\n\n"); printf("<4> Programm beenden\n\n"); printf("Ihre Auswahl < >\b\b"); scanf("%d",&abfrage); switch(abfrage) { case 1 : printf("Durchmesser : "); scanf("%f",&var); ergebnis=kreis_area(var); ergebnis_ber(ergebnis, abfrage); break; case 2 : printf("Flaeche : "); scanf("%f",&var); ergebnis=kreis_durchmesser(var); ergebnis_ber(ergebnis, abfrage); break; case 3 : printf("Durchmesser : "); scanf("%f",&var); ergebnis=kreis_umfang(var); ergebnis_ber(ergebnis, abfrage); break; case 4 : printf("Programmende\n"); break; default : printf("Unbekannte Eingabe\n"); } } while(abfrage!=4); return 0; }
im übrigen kannst du nicht immer davon ausgehen, dass die version die am wenigsten fehlermeldungen generiert, die korrekteste ist. oft hat man in nem file 100 fehler, ersetzt einen tippfehler und alles ist in butter.
-
Hast recht, danke jetzt gehts. Hätte ich glaub ich auch selber merken müssen.