ist ja ne super beschissene formatierung!
ich fang' mal damit an.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
char responseab, responseac, responsebc, responseah, responsebh, responsech;
float a, a2, b, b2, c, c2, h, p, q;
printf("Dreiecksberechner Ich rechne fuer sie die Seiten im rechtwinkligen Dreieck aus ^-^\nNote: a^2=c*p\n\n\n");
printf("Wissen sie a und b? (j)a,(n)ein:");
fflush(stdout);
scanf("%c%*c",&responseab);
if (responseab == 'j')
{
printf("\na:");
scanf("%f",&a);
printf("\nb:");
scanf("%f",&b);
fflush(stdin);
c2=(a*a + b*b);
c= sqrt(c2);
p=(a*a)/c;
q=c-p;
h=p*q;
printf("\nc:%f\np:%f\nq:%f\nh:%f\n",c,p,q,h);
}
if (responseab == 'n')
{
fflush(stdin);
printf("\nWissen sie a und c? (j)a/(n)ein:");
scanf("%c",&responseac);
if (responseac == 'j')
{
printf("\na:");
scanf("%f",&a);
printf("\nc:");
scanf("%f",&c);
fflush(stdin);
b2= c*c - a*a;
b= sqrt(b2);
p=(a*a)/c;
q=c-p;
h=p*q;
printf("\nb:%f\np:%f\nq:%f\nh:%f \n",b,p,q,h);
}
if (responseac == 'n')
{
fflush(stdin);
printf("\nWissen sie b und c? (j)a/(n)ein:");
scanf("%c",&responsebc);
if (responsebc == 'j')
{
printf("\nb:");
scanf("%f",&b);
printf("\nc:");
scanf("%f",&c);
fflush(stdin);
a2= c*c - b*b;
a= sqrt(a2);
p=(a*a)/c;
q=c-p;
h=p*q;
printf("\na:%f\np:%f\nq:%f\nh:%f \n",a,p,q,h);
fflush(stdin);
}
if (responsebc == 'n')
{
fflush(stdin);
printf("\nWissen sie a und h? (j)a/(n)ein:");
scanf("%c",&responseah);
if (responseah == 'j') /*Ab hier wird nicht mehr das Ergebnis angezeigt*/
{
printf("\na:");
scanf("%f",&a);
printf("\nh:");
scanf("%f",&h);
fflush(stdin);
p= sqrt(a*a - h*h);
fflush(stdin);
c= (a*a)/p;
fflush(stdin);
q=c-p;
fflush(stdin);
b= sqrt(c*c - a*a);
printf("\nb:%f\np:%f\nq:%f\nc:%f \n",b,p,q,c);
fflush(stdin);
goto ENDE;
}
if (responseah == 'n');
{
fflush(stdin);
printf("\nWissen sie b und h? (j)a/(n)ein:");
scanf("%c",&responsebh);
if (responsebh == 'j'); /* Hier ist es egal, was ich nehme.
*Ob 'j' oder 'n' es wird nach b und h gefragt
*und dann setzt der goto-befehl ein
*den ich gemacht habe, weil sonst die Frage nach c und h kommt*/
{
printf("\nb:");
scanf("%f",&b);
printf("\nh:");
scanf("%f",&h);
fflush(stdin);
q= sqrt(b*b - h*h);
fflush(stdin);
c= (b*b)/q;
fflush(stdin);
p=c-q;
fflush(stdin);
a= sqrt(c*c - b*b);
printf("\na:%f\np:%f\nq:%f\nc:%f \n",a,p,q,c);
goto ENDE;
}
if (responsebh == 'n');
{
fflush(stdin);
printf("\nWissen sie c und h? (j)a/(n)ein:");
scanf("%c",&responsech);
if (responsech == 'j')
{
printf("\nc:");
scanf("%f",&c);
printf("\nh:");
scanf("%f",&h);
fflush(stdin);
q= c-(h/q);
fflush(stdin);
p= c-q;
fflush(stdin);
a= sqrt(c*p);
fflush(stdin);
b= sqrt(c*c - a*a);
printf("\nb:%f\np:%f\nq:%f\na:%f \n",b,p,q,a);
goto ENDE;
}
if (responsech == 'n')
{
printf("\nEs tut mir auserordentlich Leid\nIch weiß noch nicht, wie ich mit Winkeln umzugehen habe.\n");
}
}
}
}
}
}
ENDE : printf("\nIch hoffe ich habe ihnen geholfen und keine Fehler gemacht, wobei ich natuerlich NIE Fehler mache\n\nMit freundlichen Gruessen,\n Hans^-^\n");
system("PAUSE");
return 0;
}
ausserdem echt sehr bescheidener programmierstiel!
versuch' erstmal das programm in einzelnde funktionen zu zerlegen. da blickt ja keiner durch!
und, die ganzen
fflush(stdin); kannst du dir komplett sparen. was wolltest du damit eigentlich erreichen?