Kleinsten Wert in Array finden

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Robocop1
Beiträge: 24
Registriert: Mo Dez 07, 2020 3:59 pm

Kleinsten Wert in Array finden

Beitrag von Robocop1 » Do Apr 15, 2021 1:00 am

Könnte mir jemand sagen, wozu man hier die integer "pos" benötigt?
Der Code sagt, vergleiche erste Stelle im Array a[0] mit zweiter Stelle a[1], wenn erste Stelle größer ist => nimm als "small" den Wert der kleineren (zweite) Stelle an. Das macht man sooft bis 5 Stellen (N = 5) durchlaufen hat und damit den kleinsten Wert bekommen.

Wofür dann die Codezeilen: "pos = 1" und "pos = i +1;" ??

Danke sehr im Voraus!

Code: Alles auswählen

#include <stdio.h>		
#include <stdlib.h>		
#define N 5		
		
int main()		
{		
    int a[N], i, small, pos;		
		
    printf("Enter %d integer numbers\n", N);		
    for (i = 0; i < N; i++)		
        scanf("%d", &a[i]);		
		
    small = a[0];		
    pos = 1;		
		
    for(i = 1; i < N; i++)		
    {		
        if(small > a[i])		
        {		
            small = a[i];		
            pos = i + 1;		
        }		
    }		
		
    printf("Smallest Number: %d, at position %d\n", small, pos);		
    return 0;		
}		

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kleinsten Wert in Array finden

Beitrag von Xin » Do Apr 15, 2021 8:43 am

Unten im printf wird nicht nur die kleinste Nummer, sondern auch die Position im angezeigt. Dafür muss man sich die Position der kleinsten Nummer auch speichern, um sie später auszugeben.

Wenn das Feld nur 1 groß ist, wird nicht gesucht. Dann ist small mit a[0] initialisiert und es ist die erste Position.
Dann wird gesucht. Da man in den Klammern [] immer das Offset angibt - also wie viele Objekte man überspringt - fängt man bei 0 an zu zählen. Um jetzt die Position anzugeben, muss man nicht das Offset i angeben, sondern das Offset i + 1.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Robocop1
Beiträge: 24
Registriert: Mo Dez 07, 2020 3:59 pm

Re: Kleinsten Wert in Array finden

Beitrag von Robocop1 » Fr Apr 16, 2021 1:18 am

Verstanden, danke!!

Wenn small den (kleineren) Wert der nächsten Position einnimmt, muss "at position" natürlich auch auf die nächste Indexposition wechseln.

Habe letzten printf nicht genau angeschaut :cry: :roll:

Robocop1
Beiträge: 24
Registriert: Mo Dez 07, 2020 3:59 pm

Re: Kleinsten Wert in Array finden

Beitrag von Robocop1 » Fr Apr 16, 2021 2:55 am

Gewöhnungsbedürftig ist, dass

pos = 1 , der Indexposition 0 , also der ersten Position im array entspricht.

Während dieselbe Position bei small --> "small = a[0]" geschrieben wird.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kleinsten Wert in Array finden

Beitrag von nufan » Fr Apr 16, 2021 7:12 am

Es hängt natürlich auch davon ab, was sich der Benutzer deines Programms erwartet. Ein Nicht-Programmierer wäre über eine Ausgabe von Position 0 vielleicht etwas verwundert.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kleinsten Wert in Array finden

Beitrag von Xin » Fr Apr 16, 2021 8:20 am

Wie ich schon schrieb: das eine ist die Position, sowas wie die Hausnummer. Wenn man an der "array"-Straße steht, steht man automatisch am ersten Haus. In Klammern gibt man nun an, wieviele Häuser man weiter zieht. Um zum ersten Haus zu kommen, muss man 0 Häuser weiterziehen. Das eine ist also die Position, das andere das Offset.
Im Regelfall arbeiten die Leute mit Positionen. Offsets haben wir bei Etagen (im deutschsprachigen Raum) oder gerne auch bei Zeiten. Es ist 0 Uhr (in Europa, in Amerika ist es es dann 12 Uhr). Oder wir leben 2021 (Offset), also im 21. Jahrhundert (Position). Jemand ist im ersten Lebensjahr (Position), es sind also noch 0 Jahre seit der Geburt vergangen.

So gewöhnungsbedürftig ist das eigentlich nicht. Für den Computer ist es lediglich einfacher (=schneller) mit dem Offset zu arbeiten, als die Position umzurechnen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Robocop1
Beiträge: 24
Registriert: Mo Dez 07, 2020 3:59 pm

Re: Kleinsten Wert in Array finden

Beitrag von Robocop1 » Fr Apr 16, 2021 9:15 pm

Ah jetzt ists mir einleuchtend ! :idea: :idea: :idea: :)

Thx!

Antworten