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;
}
Dieses Programm hab ich für ein paar Freunde geschrieben, aber leider funst es nich so, wie es soll
Ich hab in Kommentaren geschrieben, was los ist.
Kann mir bitte, bitte, bitte jemand sagen, wo der Fehler liegt? Ich hab keine Ahnung...
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?
__________________
entropie erfordert keine wartung
sorry aber
mir gehts nicht um den programmierstiel erstmal.
ich hab gelesen, wenn was mit den Eingaben nicht funst, soll man das schreiben. Dadurch hatte ich gehofft es klappt, danke für die info ... oh aso ja sorry
ich hatte bei dem befehl was anderes im kopf