- fchao-Sinus-Wechselrichter AliExpress         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: Charles Problem

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

    Praxistest und DIY Projekte
    Naja eigentlich schon, nur mir fällt nix ein außer die Sache mit den Arrays.

  2. #32
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Es gibt verschiedene Funktionen zum sortieren. Selbst benutzt hab ich bisher nur BubbleSort,kannst es dir ja mal angucken.
    Man kann aber auch anders vorgehen, ich bastel heute Nacht nochmal ne Runde dran rum.

  3. #33
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Ich schau mir das ganze auch nochmal an.
    Wenn ich eine Lösung gefunden habe lasse ich dich das Wissen.
    Sag bescheid wenn du was findest.

  4. #34
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Es hat mich gereizt, deshalb hab ichs jetzt doch gemacht...
    Hab einen BubbleSort ähnlichen Sortieralgorythmus implementiert:

    Code:
    	float fhypo=0;
    	int ihypo=0;
    	
    	float fflaeche=0;
    	int iflaeche=0;
    
    	int ix=1;
    	int iy=1;
    
    	int izaehler=0;
    	int ifertig=0;
    
    	int ergebnisse[400][4];
    	int ergebnissetemp[1][4];
    
    
    	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
    				{
    					ergebnisse[izaehler][0]=ix;
    					ergebnisse[izaehler][1]=iy;
    					ergebnisse[izaehler][2]=ihypo;
    					ergebnisse[izaehler][3]=iflaeche;
    
    					izaehler++;
    				}
    			}
    
    			iy++;
    		}
    
    		iy=1;
    		ix++;
    	}
    
    	while(!ifertig)
    	{
    		ifertig=1;
    
    		for(int l=0; l<izaehler; l++)
    		{
    			if(ergebnisse[l][3]>ergebnisse[l+1][3])
    			{
    				ergebnissetemp[0][0]=ergebnisse[l][0];
    				ergebnissetemp[0][1]=ergebnisse[l][1];
    				ergebnissetemp[0][2]=ergebnisse[l][2];
    				ergebnissetemp[0][3]=ergebnisse[l][3];
    
    				ergebnisse[l][0]=ergebnisse[l+1][0];
    				ergebnisse[l][1]=ergebnisse[l+1][1];
    				ergebnisse[l][2]=ergebnisse[l+1][2];
    				ergebnisse[l][3]=ergebnisse[l+1][3];
    
    				ergebnisse[l+1][0]=ergebnissetemp[0][0];
    				ergebnisse[l+1][1]=ergebnissetemp[0][1];
    				ergebnisse[l+1][2]=ergebnissetemp[0][2];
    				ergebnisse[l+1][3]=ergebnissetemp[0][3];
    				
    				ifertig=0;
    			}
    		}
    	}
    
    	for(int s=0; s<izaehler; s++)
    		printf("%d\t%d\t%d\t%d\n", ergebnisse[s][0], ergebnisse[s][1], ergebnisse[s][2], ergebnisse[s][3]);
    
    	getchar();
    	return 0;
    }

  5. #35
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    Das ist auch eine gute Methode so hat man auf jedenfall die, die mindestens 2 mal vorkommen. Jetzt ist es nur daran das ganze für die, die 3 mal vorkommen abzufrage richtig?

  6. #36
    Neuer Benutzer Öfters hier
    Registriert seit
    30.01.2011
    Beiträge
    20
    So es läuft Vielen Dank es hat Spaß gemacht
    Hier der Quellcode.

    Code:
      #include <stdio.h>
      #include <math.h>
      
      main()
      {
       int i = 0;
       int n;
       
       float fhypo = 0;
       int ihypo = 0;
       
       float fflaeche = 0;
       int iflaeche = 0;
    
       int ix = 1;
       int iy = 1;
    
       int izaehler = 0;
       int ifertig = 0;
    
       int ergebnisse[400][4];
       int ergebnissetemp[1][4];
    
       printf("Wie viele rechtwinklige und flaechengleiche Dreiecke soll das Programm suchen? ");
       scanf("%d", &n);
    
       do
       {
          do
          {
             fhypo = sqrt((float)(ix*ix)+(iy*iy)); 
             ihypo = (int)fhypo;
    
             if((fhypo-ihypo) == 0) 
             {
                fflaeche = (float)(ix * iy / 2);
                iflaeche = (int)fflaeche;
    
                if((fflaeche-iflaeche) == 0) 
                {
                   ergebnisse[izaehler][0] = ix;
                   ergebnisse[izaehler][1] = iy;
                   ergebnisse[izaehler][2] = ihypo;
                   ergebnisse[izaehler][3] = iflaeche;
    
                   izaehler++;
                }
             }
    
             iy++;
          }while(iy < 250);
    
          iy = 1;
          ix++;
       }while(ix < 250);
    
       do
       {
          ifertig = 1;
          int l;
          for(l=0; l<izaehler; l++)
          {
             if(ergebnisse[l][3] > ergebnisse[l+1][3])
             {            
                ergebnissetemp[0][0] = ergebnisse[l][0];
                ergebnissetemp[0][1] = ergebnisse[l][1];
                ergebnissetemp[0][2] = ergebnisse[l][2];
                ergebnissetemp[0][3] = ergebnisse[l][3];
    
                ergebnisse[l][0] = ergebnisse[l+1][0];
                ergebnisse[l][1] = ergebnisse[l+1][1];
                ergebnisse[l][2] = ergebnisse[l+1][2];
                ergebnisse[l][3] = ergebnisse[l+1][3];
    
                ergebnisse[l+1][0] = ergebnissetemp[0][0];
                ergebnisse[l+1][1] = ergebnissetemp[0][1];
                ergebnisse[l+1][2] = ergebnissetemp[0][2];
                ergebnisse[l+1][3] = ergebnissetemp[0][3];
                
                ifertig = 0;
             }
          }
       }while(ifertig != 1);
    
       again:;
    
       int s;
       
       do
       {
       s++;
           if(ergebnisse[s][3] == ergebnisse[s-1][3] && ergebnisse[s][3] == ergebnisse[s-2][3] && i<n-1)
           {
           i++;
           printf("\n--%d-------------", i);
           printf("\nFlaeche: %d", ergebnisse[s][3]);
           printf("\nDreieck1 (%d, %d, %d)", ergebnisse[s-2][0], ergebnisse[s-2][1], ergebnisse[s-2][2]);
           printf("\nDreieck2 (%d, %d, %d)", ergebnisse[s-1][0], ergebnisse[s-1][1], ergebnisse[s-1][2]);
           printf("\nDreieck3 (%d, %d, %d)\n", ergebnisse[s][0], ergebnisse[s][1], ergebnisse[s][2]);
           s=s+2;
           goto again;
           }
           
           else if (ergebnisse[s][3] == ergebnisse[s-1][3] && ergebnisse[s][3] == ergebnisse[s-2][3] && i == n-1)
           {
           i++;
           printf("\n--%d-------------", i);
           printf("\nFlaeche: %d", ergebnisse[s][3]);
           printf("\nDreieck1 (%d, %d, %d)", ergebnisse[s-2][0], ergebnisse[s-2][1], ergebnisse[s-2][2]);
           printf("\nDreieck2 (%d, %d, %d)", ergebnisse[s-1][0], ergebnisse[s-1][1], ergebnisse[s-1][2]);
           printf("\nDreieck3 (%d, %d, %d)\n", ergebnisse[s][0], ergebnisse[s][1], ergebnisse[s][2]);
           break;
           }   
                
       }while(s < izaehler-1);
    
       getch();
    }

  7. #37
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Simpel aber ausreichend!
    Nur für das goto gehörst du eigentlich gehauen!

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

12V Akku bauen