C: Wie kann ich die Position einer Zahl in einem Array finden?
Angenommen, ich habe eine Liste von Zahlen. Ich soll ein Programm schreiben, wo ich die Stelle einer Zahl aus der Liste finde. Wie mache ich das? Irgendwie verstehe ich gar nichts. In Worten hätte ich es so gesagt:
Liste [1, 2, 4, 7, 9]
finde die Position von n=4
überprüfe die erste Zahl wenn sie = 4 ist
print "die Zahl ist bei index 0"
wenn nicht, gehe zur nächsten Zahl in der Liste
mach das solange bis du n=4 findest
Wie schreibe ich das in einen C-Code?
2 Antworten
Eine Aufgabe, für die es viele verschiedene Lösungen gibt. Für den Anfang brauchst du ungefähr das hier:
#include <stdio.h>
int main(int argc, char *argv[])
{
int liste[] = { 1, 2, 4, 7, 9 };
int treffer = -1;
int i;
for (i = 1; i < 5; i++) {
if (liste[i] == 4) {
treffer = i;
break;
}
}
if (treffer == -1) {
printf("Die Zahl wurde nicht gefunden\n");
} else {
printf("Die Zahl steht in Position %d\n", treffer);
}
return 0;
}
Du musst den Fall bedenken, dass die gesuchte Zahl in dem Feld gar nicht vorkommt. Im oben gezeigten Programm ist folgendes zu beachten:
- Die Variable treffer soll nach dem Verlassen der Schleife die Position angeben, in der die gesuchte Zahl gefunden wurde, oder einen Hinweis, dass die Zahl nicht gefunden werden konnte.
- Die Variable treffer wird vor dem Betreten der Schleife mit dem Wert -1 vorbesetzt. Dieser Wert wird, wenn er nicht veränbdert wird, später anzeigen, dass die gesuchte Zahl nicht gefunden werden konnte.
- Wenn die Zahl in der schleife gefunden werden konnte, wird der Variablen treffer der aktuelle Wert der Laufvariablen i zugewiesen und die Schleife mit break sofort verlassen.
- Nach dem Verlassen der Schleife verwendest du eine Fallunterscheidung, mit der du unterscheidest ziwschen dem Fall, dass die gesuchte Zahl nicht gefunden werden konnte und dem Fall, dass die Zahl doch gefunden wurde.
Der Nächste Schritt der Programmentwicklung könnte nun sein, das Suchverfahren als Funktion so zu programmieren, dass es auf Felder verschiedener Größen anwendbar wird.
Dein Ansatz ist goldrichtig. Du iterierst über den array und checkst an jedem Index, ob die Zahl gefunden wurde. Stichwort Iterieren - Du benötigst also eine Schleife. Kommentiere gerne, wenn das noch nicht genug Hilfe war.