Also ich lern in der Schule gerade C/C++.
Und wir haben noch nichts mit "cout/cin"
Wir haben jetzt ein Projekt und da hab ich folgendes Programm geschreiben:
Das Problem ist, wie kann ich die Fehleingaben anfangen. Wenn z.b. bei Spannung ein Buchstabe eingegeben wird soll das Programm s9olang nochmal nachfragen bis man eine Zehl (numerischen Wert) eingibt.
Auf nem anderen Board hat jemand zu mir gesagt das es so geht:
Nur irgendwie will das net gehn weil mein Programm dann immer in eine Endlosschleife kommt. Kann mir bitte jemand helfen? Wäre sehr nett, Danke!
Und wir haben noch nichts mit "cout/cin"
Wir haben jetzt ein Projekt und da hab ich folgendes Programm geschreiben:
Code:
#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();
//--------------------------------------------------------------------------------------------
}
Das Problem ist, wie kann ich die Fehleingaben anfangen. Wenn z.b. bei Spannung ein Buchstabe eingegeben wird soll das Programm s9olang nochmal nachfragen bis man eine Zehl (numerischen Wert) eingibt.
Auf nem anderen Board hat jemand zu mir gesagt das es so geht:
Code:
printf("\n\n <Volt> Netzspannungspannung: ");
while(!scanf("%f", &f32Umax))
printf("Die Spannung muß eine Gleitkommazahl sein!\n");
printf(" <Ampere> maximaler Stromfluss: ");
while(!scanf("%f", &f32Imax))
printf("Die Stromstärke muß eine Gleitkommazahl sein!\n");
printf(" <Meter> Kabellaenge: ");
while(!scanf("%f", &f32Laenge))
printf("Die Kabellänge muß eine Gleitkommazahl sein!\n");
Nur irgendwie will das net gehn weil mein Programm dann immer in eine Endlosschleife kommt. Kann mir bitte jemand helfen? Wäre sehr nett, Danke!