Array ->> Search Maximum



  • Hi!

    Also ich hab ihr ein Programm das Cosinuswerte erstellt und in ein Array speichert.

    Das ganze reinspeichern etc. ist mir ja klar.
    Aber in der for-schleife von fndmax steht ja i<=26.

    Warum gerade 26?

    Es sind ja 24 Werte?

    Und die 2. if()-anweisung verstehe ich auch nicht.
    Wenn max=0 ist, dann ist eh alles größer?

    Mhm.. naja es kommen auch -Zahlen vor. Und ich suche ja den größten Wert.

    Also schließe ich mit der 2. if anweisungen mal die -zahlen aus?

    Gruß

    #include <stdio.h>
    #include <math.h>
    
    #define MAX_LAENGE 100
    
    void  gensin(double a[], int length, float i); 
    float fndmax(double a[], int length);
    
    int main (void)
    {
    	double a[MAX_LAENGE];
    	int length=0;
    	float i=0;
    	int max=0;
    
    	for(i=-6; i<=6; i=i+0.5)
    	{
    		gensin(a,length,i);
    		printf("a[%i]: %2.3f\n",length,a[length]);
    		length++;
    	}
    	max = fndmax(a, length);
    	printf("\nDer Index des hoechsten Wertes lautet %i\n",max);
    }
    
    void  gensin(double a[], int length, float i)
    {
    	a[length] = cos(i);
    }
    
    float fndmax(double a[], int length)
    {
    	int i=0;
    	float max=0;
    	int max_i=0;
    
    	for(i=1; i<=26; i++)
    	{
    		if(a[i] > a[i-1])
    		{
    			if(a[i] > max)
    			{
    				max=a[i];
    				max_i=i;
    			}
    		}
    	}
    	return max_i;
    }
    

  • Mod

    Sepheriot schrieb:

    Warum gerade 26?

    Es sind ja 24 Werte?

    Wenn du in 0.5er Schritten von 0 bis 1 zählst, wieviele Werte nennst du dann?

    Und die 2. if()-anweisung verstehe ich auch nicht.
    Wenn max=0 ist, dann ist eh alles größer?

    Aber max wird geändert, wenn ein Wert > 0 gefunden wurde. Danach wird beim nächsten Schritt mit diesem größeren Wert verglichen.

    Und nimm dieses Programm nicht unbedingt als Vorbild. Es ist, gelinde gesagt, funktionell aber nicht besonders gut.



  • In deinem Beispielprogramm wechselt die Sinnhaftigkeit und Implementierungsqualität stark, ich tippe mal, die ersten Zeilen hast du irgendwo abgeschrieben und dann selbst versucht, was zu machen.
    - in fndmax wird length überhaupt nicht verwendet
    - in gensin float i statt double i
    - ...
    Der Vergleich von Fließkommazahlen (also ==,<=,>=) ist diffizil und sollte von Anfängern gemieden werden, bei dir z.B. i<=6 in der for-Schleife.

    http://ideone.com/Xy8ji


Anmelden zum Antworten