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