Gast
#893906
Hi Leute!
Ich programmiere erst seit kurzem mit C und habe relativ wenig Erfahrung
damit.
Ich habe Mal einen kleinen Georechner programmiert.
Leider erhalte ich dauernd diese Meldungen:
[Warning] overflow in implicit constant conversion
[Warning] character constant too long for its type
Ich würde mich freuen wenn mir jemand verständlich antwortet (damit es
auch nicht-hardcore-programmierer verstehen).
Das ist der Code:
//Einbindung der Datei stdio.h
#include <stdio.h>
//Definition von pi, gerundet auf 100 Stellen nach dem Punkt
#define pi
3.1415265358979323846264338327950288419716939937510582097494459230781640
628620899862803
//Beginn des Hauptprogramms
int main(void){
Anfang :;
//Definition der benötigten Variabeln und Arrays
char zweidform, dreidform, beenden;
float radius, flaeche, laenge, laenge1, laenge2, laenge3, breite,
umfang, hoehe, volumen, seite[20], hseite[20], pyta[20], pflaeche[20],
pflaeche2, Grundflaeche;
int seiten, i, seitenbak, dimension;
printf ("Wollen Sie ein (2)D oder (3)D Koerper berechnen?\n\n");
fflush (stdin);
scanf ("%i",&dimension);
if (dimension == 2) {
printf ("Wollen Sie einen (K)reis, ein (R)echteck oder ein
(D)reieck berechnen?\n");
fflush(stdin);
scanf ("%c",&zweidform);
//Switch nach Eingabe
switch(zweidform) {
case 'K': case 'k' : //Berechnung von Umfang und Fläche
des Kreises
printf ("Geben Sie den Radius an\n");
fflush (stdin);
scanf ("%f",&radius);
flaeche = pi * pow(radius,2);
umfang = radius 2 pi;
printf ("Der Umfang ist %10.2f\n", umfang);
printf ("Die Flaeche ist %10.2f\n", flaeche);
fflush(stdin);
do {
printf ("Wollen Sie beenden? (y/n)\n\n");
fflush (stdin);
scanf ("%c",&beenden);
if (beenden == 'y') {
continue;
}
else if (beenden == 'n') {
goto Anfang;
}
else {
printf("Diese Eingabe war nicht
korrekt.\n");
beenden = 'ungueltig';
}
}while(beenden != 'y');
break;
case 'R' : case 'r' : //Berechnung von Umfang und Fläche
des Rechtecks
printf ("Geben Sie die Laenge an\n");
fflush (stdin);
scanf ("%f",&laenge);
printf ("Geben Sie die Breite an\n");
fflush (stdin);
scanf ("%f",&breite);
flaeche = breite * laenge;
umfang = (breite + laenge) * 2;
printf ("Der Umfang ist %10.2f\n", umfang);
printf ("Die Flaeche ist %10.2f\n\n\n", flaeche);
fflush(stdin);
do {
printf ("Wollen Sie beenden? (y/n)\n\n");
fflush (stdin);
scanf ("%c",&beenden);
if (beenden == 'y') {
continue;
}
else if (beenden == 'n') {
goto Anfang;
}
else {
printf("Diese Eingabe war nicht
korrekt.\n");
beenden = 'ungueltig';
}
}while(beenden != 'y');
break;
case 'D' : case 'd' : //Berechnung von Umfang und Fläche
des Dreiecks
printf ("Geben Sie die Laengen der Seiten an,
beginnend mit der unteren\n");
fflush (stdin);
scanf ("%f",&laenge1);
scanf ("%f",&laenge2);
scanf ("%f",&laenge3);
printf ("Geben Sie die Hoehe an\n");
fflush (stdin);
scanf ("%f",&hoehe);
flaeche = hoehe * laenge1 / 2;
umfang = laenge1 + laenge2 + laenge3;
printf ("Der Umfang ist %10.2f\n", umfang);
printf ("Die Flaeche ist %10.2f\n\n\n", flaeche);
fflush(stdin);
do {
printf ("Wollen Sie beenden? (y/n)\n\n");
fflush (stdin);
scanf ("%c",&beenden);
if (beenden == 'y') {
continue;
}
else if (beenden == 'n') {
goto Anfang;
}
else {
printf("Diese Eingabe war nicht
korrekt.\n");
beenden = 'ungueltig';
}
}while(beenden != 'y');
break;
default:
printf("Diese Eingabe war nicht korrekt.");
}
}
else if (dimension == 3) {
printf ("Wollen Sie eine (K)ugel, ein (Q)ader oder eine
(P)yramide berechnen?\n");
fflush(stdin);
scanf ("%c",&dreidform);
switch(dreidform) {
case 'K' : case 'k' : //Berechnung von Volumen und
Oberfläche der Kugel
printf ("Geben Sie den Radius an\n");
fflush (stdin);
scanf ("%f",&radius);
flaeche = 4 pi pow(radius,2);
volumen = 4/3 pi pow(radius,3);
printf ("Das Volumen ist %10.2f\n", volumen);
printf ("Die Oberflaeche ist %10.2f\n\n\n",
flaeche);
fflush(stdin);
do {
printf ("Wollen Sie beenden? (y/n)\n\n");
fflush (stdin);
scanf ("%c",&beenden);
if (beenden == 'y') {
continue;
}
else if (beenden == 'n') {
goto Anfang;
}
else {
printf("Diese Eingabe war nicht
korrekt.\n");
beenden = 'ungueltig';
}
}while(beenden != 'y');
break;
case 'Q' : case 'q' : //Berechnung von Volumen und
Oberfläche des Quaders
printf ("Geben Sie die Laenge an\n");
fflush (stdin);
scanf ("%f",&laenge);
printf ("Geben Sie die Breite an\n");
fflush (stdin);
scanf ("%f",&breite);
printf ("Geben Sie die Hoehe an\n");
fflush (stdin);
scanf ("%f",&hoehe);
volumen = breite laenge hoehe;
flaeche = (breite * laenge + breite * hoehe + laenge
* hoehe) * 2;
printf ("Das Volumen ist %10.2f\n", volumen);
printf ("Die Oberflaeche ist %10.2f\n\n\n",
flaeche);
fflush(stdin);
do {
printf ("Wollen Sie beenden? (y/n)\n\n");
fflush (stdin);
scanf ("%c",&beenden);
if (beenden == 'y') {
continue;
}
else if (beenden == 'n') {
goto Anfang;
}
else {
printf("Diese Eingabe war nicht
korrekt.\n");
beenden = 'ungueltig';
}
}while(beenden != 'y');
break;
default:
printf("Diese Eingabe war nicht korrekt.\n");
goto Anfang;
}
}
else {
printf("Diese Eingabe war nicht korrekt.\n");
goto Anfang;
}
getchar();
return 0;
}