Minimum aus Array bestimmen
-
Folgendes:
void statistik (double gehalt[], int *mitarbeiterzahl) { double min=0; double index2=0; min=gehalt[i]; for(i=0; i>*mitarbeiterzahl; i++){ if ( gehalt[i] <= min ) min =gehalt[i]; index = i; } printf("Minimalgehalt : %lf \n",min); printf("Mitarbeiter mit dem minimalen Gehalt: %lf \n", index+1); }
soll den kleinsten Wert aus gehalt[i] ausgeben, tut es aber nicht, wieso?
Der Maximalwert wird mit gleicher Formel und umgedrehten größer/kleiner Zeichen problemlos ausgegeben.
-
Ist diese Zeile:
for(i=0; i>*mitarbeiterzahl; i++)
nur ein Abtippfehler, oder hast du wirklich das
>'-Zeichen gesetzt? Es sollte nämlich
<' heissen.
Ausserdem fehlt bei deinem if die Klammer.
Besser (da schneller):double *d=gehalt+1, *index; for(i=*mitarbeiterzahl-1; i>0; --i, ++d) { if (*d <= min) { min = *d; index = d; } } printf("Minimalgehalt : %lf \n", min); printf("Mitarbeiter mit dem minimalen Gehalt: %lf \n", index-gehalt+1);
Prinzipiell sollte deine Implementierung nämlich funktionieren.
-
snoeky schrieb:
Folgendes:
void statistik (double gehalt[], int *mitarbeiterzahl) { double min=0; double index2=0; min=gehalt[i]; for(i=0; i>*mitarbeiterzahl; i++){ if ( gehalt[i] <= min ) min =gehalt[i]; index = i; } printf("Minimalgehalt : %lf \n",min); printf("Mitarbeiter mit dem minimalen Gehalt: %lf \n", index+1); }
soll den kleinsten Wert aus gehalt[i] ausgeben, tut es aber nicht, wieso?
Der Maximalwert wird mit gleicher Formel und umgedrehten größer/kleiner Zeichen problemlos ausgegeben.
Du lieferst uncompilierbaren Code:
Wo ist i definiert?
Wo ist index definiert?
%lf als Formatstring für double in printf ist undefiniert.
Warum verwendest du <mitarbeiterzahl> als Zeiger?
Wo wird index2 benutzt?
Bisschen viel für die paar Zeilen Code, zumal du bei deiner vorigen Frage schon viele Antworten und Hinweise bekommen hast, die du ignorierst.
-
@mitarbeiter
besten Dank, das hat mir schon weitergeholfen.
hatte ">" falschrum, die Klammer vergessen und index hätte in index2 umbenannt werden müssen, das kommt wenn man seinen eigenen code kopiert und nicht anständig ändert
ausserdem musst ich vor der schleife i auf 0 setzen, danach liefs ohne Problemeso siehts richtig aus
i=0; min=gehalt[i]; for(i=0; i<*mitarbeiterzahl; i++){ if ( gehalt[i] <= min ) { min =gehalt[i]; index2 = i; } } printf("Minimalgehalt : %lf \n",min); printf("Mitarbeiter mit dem minimalen Gehalt: %lf \n", index2+1);