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; }
-
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.