Hilfe bei einem kleinen C Programm



  • Es sollen 3 Zahlen eingelesen werden und dann überprüft werden ob das Dreieck
    - rechtwinklig
    - gleichzeitig
    - gleichschenklig

    oder 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 Gleichwinklig

    Aber 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 && ...


Log in to reply