Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

0 errors trotzdem Fehlerhaft

matthew76 / 5 Antworten / Flachansicht Nickles

HI, ich muss in c ein Programm mit Hilfe von Funktionen schreiben in dem man sich aussuchen kann ob man die Oberfläche oder das Volumen des Zylinders berrechnen will.


Leider funktioniert das Programm nicht, obwohl ich 0 Errors angezeigt bekomme.


Ich bitte um Hilfe. Danke im Vorraus


//Sonntag 14. Dezember 2003
//Programm zur Berechnung von Volumen & Oberfläsche eines Zylinders
//Oberflaeche = 2*pi*r*(radius+hoehe)
//Volumen = pi * r²*h



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


#define pi 3.14f


void foberflaeche(void);
void fvolumen(void);


unsigned short radius=0, hoehe=0;


void main(void)
{
 
 int menue=0, r=0;
 
 do{
  system("cls");
  printf("Zylinder!!!\n");
  printf("[1] Oberflaeche berechnen: \n");
  printf("[2] Volumen berechnen: \n");
  printf("[3] Programm beenden: \n\n");
  
  do{
   printf("Ihre Auswahl: ");
   r=scanf("%d", &menue);
  }while(r!=1 || menue<1 || menue >3);
  
  
  
  switch(menue){
   
  case 1:
   do {
    printf("\n\nRadius:");
    r=scanf("%hu", &radius);
   }while(r!=1 || radius>200);
   
   do{
    printf("Hoehe: ");
    r=scanf("%hu", &hoehe);
   }while(r!=1 || hoehe>500);
   
   foberflaeche();
   break;


   
  case 2:
   do{
    printf("\n\nRadius: ");
    r=scanf("%hu", &radius);
   }while(r!=1 || radius>200);
   
   do{
    printf("Hoehe: ");
    r=scanf("%hu", &hoehe);
   }while(r!=1 || hoehe>500);
   
   fvolumen();
   
  }
 }while(menue >0 && menue <3);
 
 
 
 printf("\nTusches und Ende !!!\n\n");
 
}


void foberflaeche(void){
 double ober=0;
 ober=((2*pi)*radius)*(radius+hoehe);
 printf("Die Oberflaeche betraegt %lf cm²", &ober);
 printf("\nTaste druecken fuer weiter:\n");
 getch();
}


void fvolumen(void){
 double volu=0;
 volu=pi*(radius*radius)*hoehe;
 printf("Das Volumen betraegt %lf cm²", &volu);
 printf("\nTaste druecken fuer weiter:\n");
 getch();
}


 

bei Antwort benachrichtigen
Dreamforger matthew76 „0 errors trotzdem Fehlerhaft“
Optionen

Mir fällt da ein Fehler und eine potentielle Fehhlerquelle auf:

Wenn ich printf() nicht seit Jahren falsch verwende musst du nicht &ober bzw &volu sondern nur ober und volu übergeben. So wie ich das sehe ist 0.00000 die float Interpretation der Adresse der lokalen Variablen.

Wie mr.escape schon sagte sind deine Datentypen total daneben. Nimm einfach für's erste für alles float, das bietet hinreichende Genauigkeit und ist korrekter als ein double, int und unsigned short Mischmasch. "2" ist im übrigen ein int. 2.0f ist der korrekte float-Wert

Noch ein paar Worte zum Programmaufbau: In einer ruhigen Minute kannst du dir mal überlegen ob es wirklich sinnvoll ist die Eingabe von höhe und radius innerhalb jedes Switch-Zweiges zu machen. Wäre es nicht sinniger die Eingabe an einer Stelle zu haben und dann nurnoch die jeweiligen Berechnungen in den Switches aufzurufen? Über die Globalen Variablen sag ich mal nichts- vielleicht waren Funktionen mit Parametern ja noch nicht dran.

bei Antwort benachrichtigen