do-while Schleifen ergänzt
This commit is contained in:
parent
3f69c5223a
commit
9b6e8fdc32
1 changed files with 55 additions and 78 deletions
|
@ -9,97 +9,74 @@
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::string input;
|
std::string input;
|
||||||
long double a = 0, b = 0, c = 0, alpha = 0, beta = 0, gamma = 0;
|
long double a, b, c, alpha, beta, gamma;
|
||||||
|
|
||||||
std::cout << "F\x81ge deiner Eingabe \"\xF8\" hinzu um einen Winkel im Gradma\xE1 einzugeben.\n\nGib Seite a oder Winkel alpha ein: ";
|
std::cout << "F\x81ge deiner Eingabe \"\xF8\" hinzu um einen Winkel im Gradma\xE1 einzugeben.\n\nGib Seite a oder Winkel alpha ein: ";
|
||||||
getline(std::cin, input);
|
do
|
||||||
|
|
||||||
for(char cha : input) if(cha=='\xF8') a++;
|
|
||||||
|
|
||||||
if(a!=0)
|
|
||||||
{
|
{
|
||||||
std::stringstream(input) >> alpha;
|
a = 0; alpha = 0;
|
||||||
|
getline(std::cin, input);
|
||||||
|
for(char cha : input) if(cha=='\xF8') a++;
|
||||||
|
|
||||||
if(alpha>180 || alpha==0)
|
if(a==1)
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Mit dem angegebenen Winkel lässt sich kein Dreieck konstruieren.";
|
a = 0;
|
||||||
return(1);
|
std::stringstream(input) >> alpha;
|
||||||
|
alpha = alpha/180*PI;
|
||||||
|
if(alpha>=PI || alpha<=0) std::cout << "ERROR: Mit dem eingegebenen Winkel l\x84sst sich kein Dreieck konstruieren. Gib alpha oder a erneut ein: ";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
alpha = alpha/180*PI;
|
|
||||||
a = 0;
|
|
||||||
}
|
|
||||||
else std::stringstream(input) >> a;
|
|
||||||
|
|
||||||
if(a+alpha<0)
|
|
||||||
{
|
|
||||||
std::cout << "ERROR: Konstruktion eines Dreiecks mit negativen Werten nicht m\x94glich.";
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Gib Seite b oder Winkel beta ein: ";
|
|
||||||
getline(std::cin, input);
|
|
||||||
|
|
||||||
for(char cha : input) if(cha=='\xF8') b++;
|
|
||||||
|
|
||||||
if(b!=0)
|
|
||||||
{
|
|
||||||
std::stringstream(input) >> beta;
|
|
||||||
|
|
||||||
if(beta>180 || beta==0)
|
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Mit dem angegebenen Winkel lässt sich kein Dreieck konstruieren.";
|
std::stringstream(input) >> a;
|
||||||
return(1);
|
if(a<=0) std::cout << "ERROR: a muss gr\x94\xE1 \ber als 0 sein. Gib a oder alpha erneut ein: ";
|
||||||
}
|
}
|
||||||
|
}while(alpha>=PI || a+alpha<=0);
|
||||||
|
|
||||||
beta = beta/180*PI;
|
std::cout << "\nGib Seite b oder Winkel beta ein: ";
|
||||||
b = 0;
|
do
|
||||||
}
|
|
||||||
else std::stringstream(input) >> b;
|
|
||||||
|
|
||||||
if(b+beta<0)
|
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Konstruktion eines Dreiecks mit negativen Werten nicht m\x94glich.";
|
b = 0; beta = 0;
|
||||||
return(1);
|
getline(std::cin, input);
|
||||||
}
|
for(char cha : input) if(cha=='\xF8') b++;
|
||||||
|
|
||||||
std::cout << "Gib Seite c oder Winkel gamma ein: ";
|
if(b!=0)
|
||||||
getline(std::cin, input);
|
|
||||||
|
|
||||||
for(char cha : input) if(cha=='\xF8') c++;
|
|
||||||
|
|
||||||
if(c!=0)
|
|
||||||
{
|
|
||||||
std::stringstream(input) >> gamma;
|
|
||||||
|
|
||||||
if(gamma>180 || gamma==0)
|
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Mit dem angegebenen Winkel lässt sich kein Dreieck konstruieren.";
|
b = 0;
|
||||||
return(1);
|
std::stringstream(input) >> beta;
|
||||||
|
beta = beta/180*PI;
|
||||||
|
if(alpha+beta>=PI || beta<=0) std::cout << "ERROR: Mit den eingegebenen Winkeln l\x84sst sich kein Dreieck konstruieren. Gib beta oder b erneut ein: ";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::stringstream(input) >> b;
|
||||||
|
if(b<=0) std::cout << "ERROR: b muss gr\x94\xE1 \ber als 0 sein. Gib b oder beta erneut ein: ";
|
||||||
|
}
|
||||||
|
}while(alpha+beta>=PI || b+beta<=0);
|
||||||
|
|
||||||
gamma = gamma/180*PI;
|
std::cout << "\nGib Seite c oder Winkel gamma ein: ";
|
||||||
c = 0;
|
do
|
||||||
}
|
|
||||||
else std::stringstream(input) >> c;
|
|
||||||
|
|
||||||
if(c+gamma<0)
|
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Konstruktion eines Dreiecks mit negativen Werten nicht m\x94glich.";
|
c = 0; gamma = 0;
|
||||||
return(1);
|
getline(std::cin, input);
|
||||||
}
|
for(char cha : input) if(cha=='\xF8') c++;
|
||||||
|
|
||||||
if(alpha!=0 && beta!=0 && gamma!=0)
|
if(c!=0)
|
||||||
{
|
{
|
||||||
std::cout << "ERROR: Der Kongruenzsatz WWW existiert nicht.";
|
c = 0;
|
||||||
return(1);
|
if(alpha!=0 && beta!=0) std::cout << "ERROR: Der Kongruenzsatz WWW existiert nicht. Gib gamma oder c erneut ein: ";
|
||||||
}
|
else
|
||||||
|
{
|
||||||
if(alpha+beta+gamma>=PI)
|
std::stringstream(input) >> gamma;
|
||||||
{
|
gamma = gamma/180*PI;
|
||||||
std::cout << "ERROR: Die Winkelsumme \x81 \bbersteigt 180\xF8";
|
if(alpha+beta+gamma>=PI || gamma<=0) std::cout << "ERROR: Mit den eingegebenen Winkeln l\x84sst sich kein Dreieck konstruieren. Gib gamma oder c erneut ein: ";
|
||||||
return(1);
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::stringstream(input) >> c;
|
||||||
|
if(c<=0) std::cout << "ERROR: c muss gr\x94\xE1 \ber als 0 sein. Gib c oder gamma erneut ein: ";
|
||||||
|
}
|
||||||
|
}while(alpha+beta+gamma>PI || c+gamma<=0);
|
||||||
|
|
||||||
if(alpha!=0 && beta!=0 || alpha!=0 && gamma!=0 || beta!=0 && gamma!=0) //WSW
|
if(alpha!=0 && beta!=0 || alpha!=0 && gamma!=0 || beta!=0 && gamma!=0) //WSW
|
||||||
{
|
{
|
||||||
|
@ -124,7 +101,7 @@ int main()
|
||||||
b = c*sin(beta)/sin(gamma);
|
b = c*sin(beta)/sin(gamma);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(alpha==beta && beta==gamma) //fängt den Sondefall eines gleichseitigen Dreiecks ab, welcher mit der obigen Methode nicht korrekt berechnet wird.
|
if(alpha==beta && beta==gamma) //fängt den Sondefall eines gleichseitigen Dreiecks ab, welcher mit der obigen Methode nicht exakt berechnet wird.
|
||||||
{
|
{
|
||||||
a = a+b+c;
|
a = a+b+c;
|
||||||
b = a;
|
b = a;
|
||||||
|
|
Reference in a new issue