Programmieren - alles kontrollieren 4.937 Themen, 20.662 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
mr.escape matthew76 „0 errors trotzdem Fehlerhaft“
Optionen

Also echt brutale fehler finden sich nicht (im switch abschnitt sollte auch für "case 2" ein break verwendet werden).
Sehr irritierend ist aber das durcheinander bei den zahlenformaten. Pi ist als float, radius und höhe als unsigned short(?!?!?) und das volumen/die oberfläche bei der berechnung als double definiert. Also entweder alles als float oder als double.
Um keine negative eingaben zu bekommen ist eben eine zweite abfrage nötig, statt unsigned short dafür zu missbrauchen.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen