Hilfe bei einem kleinen C Programm
-
Es sollen 3 Zahlen eingelesen werden und dann überprüft werden ob das Dreieck
- rechtwinklig
- gleichzeitig
- gleichschenkligoder ob 2 der oben genannten sachen zutreffen
Ich hatte mir überlegt das ich es so schreibe
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { float a, b, c; /* deklaration */ do /* eingabe der zahlen, einlesen und ueberpruefung ob <= 0 */ { printf("Bitte geben Sie die laenge der ersten Seite ein\n"); scanf("%f", &a); if(a<=0) printf("Bitte geben Sie eine positive Zahl ein\n"); } while(a<=0); do { printf("Bitte geben Sie die laenge der zweiten Seite ein\n"); scanf("%f", &b); if(b<=0) printf("Biitte geben Sie eine positive Zahl ein\n"); } while(b<=0); do { printf("Bitte geben sie die laenge der dritten Seite ein\n"); scanf("%f", &c); if(c<=0) printf("Bitte geben sie eine positive Zahl ein\n"); } while(c<=0); /*In der folgenden anweisung wird berechnet was das Dreieck fuer eine Art ist*/ if(fabs(a-b)<0.0001 || fabs(a-c)<0.0001 || fabs(b-c)<0.0001) printf("Das Dreieck ist gleichschenklig!\n"); else if (fabs(a-b)<0,0001 && fabs(a-c)<0.0001 && fabs(b-c)<0.0001) printf("Das Dreieck ist gleichseitig!\n"); float aqua, bqua, cqua; aqua = a*a; bqua = b*b; cqua = c*c; else ((fabs(aqua+bqua)-cqua)<0.0001 || (fabs(aqua+cqua)-bqua)<0.0001 || (fabs(cqua+bqua)-aqua)<0.0001) printf("Das Dreieck ist rechtwinklig!\n"); return 0; }
und dann in der Ausgabe erscheint was es ist, wenn mehrere zutreffen das prog 2 sachen ausgibt z.b.
Das Dreieck ist Gleichseitig
Das Dreieck ist GleichwinkligAber es gibt immer alle 3 Dinge aus egal was man eingibt
Weiß vielleicht jemand Rat? Wäre sehr dankbar
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo Micha2703!
Ich hab mal schnell ein kleines Programm geschrieben. Vielleicht hilfts dir ja, weil bei mir funktioniert es genau wie du es brauchst.
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char **argv) { int a, b, c; int aqua, bqua, cqua; printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); printf("c = "); scanf("%d", &c); aqua = a*a; bqua = b*b; cqua = c*c; if((a == b) && (a == c) && (b == c)) printf("Gleichseitig\n"); if(((aqua+bqua) == cqua) || ((aqua+cqua) == bqua) || ((bqua+cqua) == aqua)) printf("Rechtwinklig\n"); if((a == b) || (a == c) || (b == c)) printf("Gleichschenklig\n"); system("PAUSE"); return 0; }
-
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { float a, b, c; /* deklaration */ float aqua, bqua, cqua; do /* eingabe der zahlen, einlesen und ueberpruefung ob <= 0 */ { printf("Bitte geben Sie die laenge der ersten Seite ein\n"); scanf("%f", &a); if(a<=0) printf("Bitte geben Sie eine positive Zahl ein\n"); } while(a<=0); do { printf("Bitte geben Sie die laenge der zweiten Seite ein\n"); scanf("%f", &b); if(b<=0) printf("Biitte geben Sie eine positive Zahl ein\n"); } while(b<=0); do { printf("Bitte geben sie die laenge der dritten Seite ein\n"); scanf("%f", &c); if(c<=0) printf("Bitte geben sie eine positive Zahl ein\n"); } while(c<=0); /*In der folgenden anweisung wird berechnet was das Dreieck fuer eine Art ist*/ if(fabs(a-b)<0.0001 || fabs(a-c)<0.0001 || fabs(b-c)<0.0001) printf("Das Dreieck ist gleichschenklig!\n"); else if (fabs(a-b)<0,0001 && fabs(a-c)<0.0001 && fabs(b-c)<0.0001) printf("Das Dreieck ist gleichseitig!\n"); else { aqua = a*a; bqua = b*b; cqua = c*c; if ((fabs(aqua+bqua)-cqua)<0.0001 || (fabs(aqua+cqua)-bqua)<0.0001 || (fabs(cqua+bqua)-aqua)<0.0001) printf("Das Dreieck ist rechtwinklig!\n"); } return 0; }
-
danke aber irgendwo muss da ein fehler sein
da er immer sagt das das dreieck gleichschenklig ist
komme aber leider nicht drauf wo der fehler liegt
-
if (fabs(a-b)<0**,**0001 && ...