Problem beim Abfangen von Fehleingaben
-
#include <conio.h> #include <stdio.h> void main() { //---Variablen deklarieren-------------------------------------------------------------------- float f32Imax, f32Umax, f32Laenge, f32LeitungsWiderstand, f32Leitungsquerschnitt; const conSpezLeitwertCU = 56; const float conMaxSpannungsabfall = 0.03; //-------------------------------------------------------------------------------------------- //---Eingabe der benötigten Werte------------------------------------------------------------- printf("\Programm zur Errechnung des benoetigten Leitungsquerschnittes"); printf("\n============================================================="); printf("\n\n <Volt> Netzspannungspannung: "); scanf("%f", &f32Umax); printf(" <Ampere> maximaler Stromfluss: "); scanf("%f", &f32Imax); printf(" <Meter> Kabellaenge: "); scanf("%f", &f32Laenge); //-------------------------------------------------------------------------------------------- //---Querschnittbestimmung-------------------------------------------------------------------- if ((f32Imax > 0) && (f32Umax > 0) && (f32Laenge>0)) { //---Berechnungen--------------------------------------------------------------------------- f32LeitungsWiderstand = (conMaxSpannungsabfall * f32Umax) / f32Imax; f32Leitungsquerschnitt = (2 * f32Laenge) / (conSpezLeitwertCU * f32LeitungsWiderstand); //------------------------------------------------------------------------------------------ if (f32Leitungsquerschnitt <= 1.5) { f32Leitungsquerschnitt = 1.5; } else { if ((f32Leitungsquerschnitt > 1.5) && (f32Leitungsquerschnitt < 2.5)) { f32Leitungsquerschnitt = 2.5; } else { if ((f32Leitungsquerschnitt > 2.5) && (f32Leitungsquerschnitt < 4.0)) { f32Leitungsquerschnitt = 4.0; } else { if ((f32Leitungsquerschnitt > 4.0) && (f32Leitungsquerschnitt < 6.0)) { f32Leitungsquerschnitt = 6.0; } else { if ((f32Leitungsquerschnitt > 6.0) && (f32Leitungsquerschnitt < 10.0)) { f32Leitungsquerschnitt = 10.0; } else { if ((f32Leitungsquerschnitt > 10.0) && (f32Leitungsquerschnitt < 16.0)) { f32Leitungsquerschnitt = 16.0; } else { if ((f32Leitungsquerschnitt > 16.0) && (f32Leitungsquerschnitt < 25.0)) { f32Leitungsquerschnitt = 25.0; } else { f32Leitungsquerschnitt = 35.0; } } } } } } } } else { printf("\n ____________________________________________"); printf("\n\n Falsche Eingabe!"); printf("\n ================"); } //-------------------------------------------------------------------------------------------- //---Ausgabe des berechneten Querschnittest--------------------------------------------------- if (f32Leitungsquerschnitt > 0)//---Wurde überhaupt gerechnet? { if (f32Leitungsquerschnitt < 10)//---Wenn Ergebnis > 10 andere Ausgabeformatierung { printf("\n ____________________________________________"); printf("\n\n benoetigter Leitunsgquerschnitt: %0.1f mm * mm", f32Leitungsquerschnitt); printf("\n ==========="); } else { printf("\n _____________________________________________"); printf("\n\ benoetigter Leitunsgquerschnitt: %0.1f mm * mm", f32Leitungsquerschnitt); printf("\n ============"); } } //-------------------------------------------------------------------------------------------- //---Ende------------------------------------------------------------------------------------- printf("\n\n\n\n [Taste zum Beenden druecken]"); printf("\n ----------------------------"); getch(); //-------------------------------------------------------------------------------------------- }
Wenn ich jetzt oben einen Buchstaben eingebe berrechnet er irgendeinen Müll.
Wie kann ich eine Abfrage einbauen das ich nur gültige Zahlen eingeben kann?
-
lies eine Zeichenkette ein, prüfe ob in dieser auch nur Ziffern
vorkommen und wandel diese anschließend mit atof wieder in float um.Viele Grüße
Fischi
-
hehe, leitungsquerschnitt (da kommen erinnerungen auf)
zu deinem problem:
du solltest die warnungen des compilers nicht ignorieren:... int main() ... float f32Imax, f32Umax, f32Laenge, f32LeitungsWiderstand, f32Leitungsquerschnitt=0.0; ... const int conSpezLeitwertCU = 56; ... printf("\nProgramm zur Errechnung des benoetigten Leitungsquerschnittes"); ... printf("\n benoetigter Leitunsgquerschnitt: %0.1f mm * mm", f32Leitungsquerschnitt); ... return 0;