- 12V Akku mit 280 Ah bauen         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 37

Thema: Charles Problem

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Anzeige

    E-Bike
    Hallo zusammen.

    Mittlerweile sieht mein Programmcode so aus:

    Code:
    #include <stdio.h>
    #include <math.h>
    
    main()
    {
    int a[3]={}, b[3]={}, c[3]={}, i=0, n, A=0;
          
    printf("Wie viele solche Dreiecke soll das Programm suchen? ");
    scanf("%d", &n);
          
    start:;
    
    do{                        /* }while(i!=n); */
    i++;
          
    do{                        /* }while((a[0]*b[0])/2!=A && (a[1]*b[1])/2!=A && (a[2]*b[2])/2!=A); */
    A++;  
          
    do{                        /* }while(b[0]<A); */
    b[0]=b[0]+1; 
    a[0]=0;
                
    do{                        /* }while(b[0]>a[0]); */
    a[0]=a[0]+1;
    
    if((a[0]*b[0])/2==A)
    {                       
    b[1]=b[1]+1;
    a[1]=0;
                                  
    do{                        /* }while(b[1]>a[1]); */
    a[1]=a[1]+1;
    
    if((a[1]*b[1])/2==A)
    {                       
    b[2]=b[2]+1;
    a[2]=0;
                                                     
    do{                        /* }while(b[2]>a[2]); */
    a[2]=a[2]+1;
    
    if((a[2]*b[2])/2==A)
    {
    goto ausgabe;
    }
    }while(b[2]>a[2]);
    }
    }while(b[1]>a[1]);
    }
    }while(b[0]>a[0]);
          
    ausgabe:;
          
    if((a[0]*b[0])/2==A && (a[1]*b[1])/2==A && (a[2]*b[2])/2==A)
    {
    c[0]=sqrt(pow(a[0],2)+pow(b[0],2));
    c[1]=sqrt(pow(a[1],2)+pow(b[1],2));
    c[2]=sqrt(pow(a[2],2)+pow(b[2],2));
          
    if((int)a[0]==a[0] && (int)a[1]==a[1] && (int)a[2]==a[2] && (int)b[0]==b[0] && (int)b[1]==b[1] && (int)b[2]==b[2] && (int)c[0]==c[0] && (int)c[1]==c[1] && (int)c[2]==c[2])
    {
    printf("\n\n--%d-------------", i);
    printf("\nFlaeche: %d", A);
    printf("\nDreieck1 (%d, %d, %d)", a[0], b[0], c[0]);
    printf("\nDreieck1 (%d, %d, %d)", a[1], b[1], c[1]);
    printf("\nDreieck1 (%d, %d, %d)", a[2], b[2], c[2]); 
    }
    }
          
    else
    {
    goto start;
    }
          
    }while(b[0]<A);
    }while((a[0]*b[0])/2!=A && (a[1]*b[1])/2!=A && (a[2]*b[2])/2!=A);
    }while(i!=n);
    
          getch();
          }
    Und ich habe immernoch keinen blassen Schimmer was ich falsch mache.
    Bitte um hilfreiche Tipps was den Quellcode angeht. Bin wie gesagt noch ziehmlich frisch in Sachen C.

    Vielen Dank

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Ist dein Code wirklich so formatiert?! Wenn ja dann ist es kein wunder wenn du nciht mehr durch blickst.
    Muss jetzt gleich leider zur Arbeit, werd mich der Sache heute Nacht mal annehmen.

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Nein so ist es nicht formatiert es hätte sonst hier noch ekelhafter ausgesehen. Vielen Dank dass du mal drauf schaust

  4. #24
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    So, hab jetzt mal was programmiert.
    Ich denke es ist alles nachvollziehbar...

    Das Programm ermittelt ganzzahlige Hypothenusen zu Kathetenlängen von 1 - 200, ist die Hypothenuse ganzzahlig wird geprüft ob die Fläche auch ganzzahlig ist, wenn ja wird alles ausgegeben.
    Die Beispiele aus der Aufgabe kommen jedenfalls drin vor.

    Jetzt muss nur noch zu Paaren sortiert werden...

    Hoffe ich habe da keinen Denkfehler drin, bin grad etwas müde.

    Code:
    	float fhypo=0;
    	int ihypo=0;
    	
    	float fflaeche=0;
    	int iflaeche=0;
    
    	int ix=1;
    	int iy=1;
    
    
    	while(ix<201)
    	{
    		while(iy<201)
    		{
    			fhypo = sqrt((float)(ix*ix)+(iy*iy)); //hypothenuse errechnen
    			ihypo = (int)fhypo;
    
    			if((fhypo-ihypo) == 0) //prüfen ob hypothenuse eine ganzzahl ist
    			{
    				fflaeche = (float)(ix * iy / 2); //fläche errechnen
    				iflaeche = (int)fflaeche;
    
    				if((fflaeche-iflaeche) == 0) //prüfen ob fläche eine ganzzahl ist
    				{
    					printf("%d\t%d\t%d\t%d\n", ix, iy, ihypo, iflaeche);
    				}
    			}
    
    			iy++;
    		}
    
    		iy=1;
    		ix++;
    	}

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Hey vielen Dank die richtigen Werte finden sich dort wieder. Gibt es eine C Funktion mit der man Werte nach Größe sortiert bzw nur den größten Wert übernimmt? Dann könnte man doch die Werte in Arrays abspeichern und vergleichen oder? Wo kommen den die ganzen anderen Werte her? Da stehen z.B. mehrere Werte für iy, ihypo und iflaeche bei ix=15. Liegt das an den Bedingungen?

  6. #26
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Wo kommen den die ganzen anderen Werte her? Da stehen z.B. mehrere Werte für iy, ihypo und iflaeche bei ix=15. Liegt das an den Bedingungen?
    Das liegt daran das es viel mehr Dreiecke mit ganzzahligen Katheten, Hypothenuse und Fläche gibt, ind einer Aufgabe werden aber nur die berücksichtigt, von denen es mindestens drei zu einer Fläche gibt.

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Aso ok hast du eine Idee wie man dir mit dem gleichen Flächeninhalt rausfiltern kann? Würde die Werte in Arrays schreiben und vergleichen. Aber wie soll man das genau umsetzen?

  8. #28
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Naja das in das Array schreiben ist doch kein Ding, und dann stumpf das Array jedesmal komplett durchlaufen und die selben raussuchen.
    Nicht besoinders schick, aber fürn Anfang...

  9. #29
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Was wäre denn schicker?

  10. #30
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Du bist nicht wirklich n Tüfftler oder?!
    Was hättest du für ne Idee das Problem zu lösen?

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress