größte Zahl Suche
-
Guten Tag,
Ich bin neu in der C-Programmierung, ich möchte ein C-Programm schreiben, das der größte Zahl sucht. Ich habe ein Array mit 5 Elemente initializiert, der größte Zahl wird jedoch nicht gefunden, sondern immer die fünfte Stelle des Arrays.
Mit freundlichen Grüßen
#include <stdio.h> #include <stdlib.h> void auswerten () { int i=0; int tmp=0; int max=0; int zahlen[5]; zahlen[0] = 5; zahlen[1] = 100; zahlen[2] = 66; zahlen[3] = 77; zahlen[4] = 15; for(i=0;i<5;i++) { tmp=zahlen[i]; if(tmp > zahlen[i+1]) { max=tmp; } } printf("Der groesste Zahl ist:%i\n",max); } int main() { auswerten(); return 0; }
-
so erstmal willkommen in der wunderbaren welt von c^^.
printf("Der groesste Zahl ist:%i\n",max);
// wenn mich nicht alles täuscht, wird eine Zahl dezimal dargestellt, wenn man %d und nicht %i (könnte aber auch für integer stehen und auch funzen, benutz es jedenfalls nie )
dann musst du auf jeden fall deine funktion
void auswerten ()
oben ähnlich einem header "deklarieren" indem du einfach
void auswerten(void);
oben unter die include befehle schreibst.
ansonsten müsste die syntax funktionieren.
-
Danke für die schnelle Antwort, dass hat aber mit meinem Problem wenig zu tun. Ich bekomme als größte Zahl immer 77 in diesem Fall zahlen[4] und das ist nicht richtig.
mfg
-
tmp=zahlen[i]; if(tmp > zahlen[i+1]) { max=tmp; }
Wenn in Max der höchste Wert gespeichert werden soll, dann sollte die Abfrage
vorher auch auf dieses Verhalten prüfentmp=zahlen[i]; if(tmp > max) { max=tmp; }
//Edit: vielleicht noch als nachtrag zu zahlen[i+1] ... wenn i den Wert 4 erhält, greifst du auf einen Index zu, den es "nicht gibt". Dies führt zu undefiniertem Verhalten oder schlimmer noch zu einer Speicherzugriffsverletzung
-
stimmt ja so funzt das auch net^^.
du bekommst 77 raus, weil 77 eben größer als 15 ist und du ja nur das abfragst. mach es doch mal so:for(i=0; i<5; i++) { if(max < zahlen[i]) { max= zahlen[i]; } }
-
Peter Müller schrieb:
for(i=0;i<5;i++) { tmp=zahlen[i]; if(tmp > zahlen[i+1]) { max=tmp; } }
Ein Vergleich mit max wäre Sinnvoller.
max = zahlen[0]; for (i = 1; i < 5; ++i) { if (zahlen[i] > max) max = zahlen[i]; } printf("Max ist %d!\n", max);
Diese Variante funktioniert ebenfalls mit negativen Zahlen, da der initiale größte Wert der erste vom Array ist.
-
Omg das war der Fehler, das war ja gar nicht schwer.
Vielen Dank für die Hilfe
-
wenn man schreibt:
max=0;
und dann die schleife müsste es doch auch funktionieren. da ja 0 größer als was negatives ist.
-
JanJanJan meinte damit, dass das Array negative Zahlen beinhalten kann.
Eeiner Initialisierung zu Anfang mit 0 würde dafür sorgen, das am ende IMMER 0 rauskommt, obwohl das Array eventuell NUR negative Zahlen beinhalten würde.
-
oh stimmt, daran hab ich gar nicht gedacht^^
-
BasicMan01 schrieb:
JanJanJan meinte damit, [...]
Wer ist JanJanJan?
-
da ist wohl ein Jan zuviel drin