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üfen

    tmp=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


Anmelden zum Antworten