Forum: Mikrocontroller und Digitale Elektronik in for schleife suchen


von Peter (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine Anfänger Frage bezüglich der for Schleife.




Array index | Wert
  0         | -10
  1         | 5
  2         | 10
  3         | 15
  4         | 20

wie kann ich laut der obere Tabelle in eine for-Schleife den Wert 9 
suchen.

Danke im Vorraus

Gruß Peter

von Cyblord -. (cyblord)


Lesenswert?

Peter schrieb:
> Hallo zusammen,
>
> ich habe eine Anfänger Frage bezüglich der for Schleife.

Welcher?

>
> Array index | Wert
>   0         | -10
>   1         | 5
>   2         | 10
>   3         | 15
>   4         | 20
>
> wie kann ich laut der obere Tabelle in eine for-Schleife den Wert 9
> suchen.

Abgesehen davon dass der gesuchte Wert wohl nicht da ist, ist die 
trivialste Strategie einfach alle Werte durchzugehen. Sind die Werte 
willkürlich sortiert, bleibt meist gar nichts anderes übrig.
Sind sie sortiert wie im Beispiel, kommt z.B. eine binäre Suche in 
Betracht.

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

Vielleicht so:
1
for (i=0; i<ArraySize; i++)
2
{
3
   if (Wert[i] == 9) break; 
4
}
5
if (i==ArraySize) printf("9 ist nicht vorhanden\n);
6
else printf("9 steht in Element %d\n", i);
Es ist nicht ganz klar, was du willst.
Im Beispiel steht nach Beendigung der Schleife 'i' dann auf dem Index, 
der den Wert enthält, falls er enthalten ist.
Sollte 'i' am Ende auf ArraySize stehen, dann war die gesuchte '9' nicht 
drin.

von Peter (Gast)


Lesenswert?

würde es so funktionieren.
1
int temp1;
2
int temp2;
3
 
4
for (int i = 0; i < 5 ; i++)
5
 {
6
     if (Array[i]< 9 && Array[i] > 9)
7
        {
8
            temp1= Array[i];  // Array[1] = 5
9
            temp2= Array[i];  // Array[2] = 10
10
        }
11
12
13
}

MOD: bitte in Zukunft die [c] Tags selber setzen, wie in der 
Bedienungsanleitung gleich unter "Wichtige Regeln - erst lesen, dann 
posten!" beschrieben.

: Bearbeitet durch Moderator
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter schrieb:
> würde es so funktionieren.

Es? Was?

von JH (Gast)


Lesenswert?

Peter schrieb:
>      if (Array[i]< 9 && Array[i] > 9)

Denk doch mal darüber nach, wie das Array aussehen müsste, damit ein 
Eintrag gleichzeitig größer und kleiner 9 sein kann. Dann fällt dir auch 
direkt auf, was deine Schleife tut. Tip: Viel ist es nicht.

Beitrag #5613124 wurde von einem Moderator gelöscht.
Beitrag #5613134 wurde von einem Moderator gelöscht.
von Sebastian R. (lange_leitung)


Lesenswert?

Ich glaube, ich habe erraten, was Du machen willst. Du suchst den 
Eintrag im Array, der 9 ist, oder die beiden Einträge, zwischen denen 9 
liegt. Wobei das Array aufsteigend sortiert ist. Richtig?

Peter schrieb:
>      if (Array[i]< 9 && Array[i] > 9)
Hier musst Du
1
if (Array[i]< 9 && Array[i+1] > 9)
 (Das +1 fehlt) schreiben, wobei Du noch abfangen musst, dass Du nicht 
in das 6. Arrayfeld schaust.

>             temp2= Array[i];  // Array[2] = 10
Hier dann auch +1. Wobei Du das ja gar nicht in 2 Variablen 
zwischenspeichern musst, wenn Du eh weißt, dass die 9 immer zwischen dem 
aktuellen und dem folgenden Feld liegt.

Jetzt musst Du noch den Fall berücksichtigen, dass 9 direkt als Wert 
vorkommt.

Gruß
Sebastian

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sebastian R. schrieb:
> if (Array[i]< 9 && Array[i+1] > 9)

Damit findet man aber nur die Einträge, zwischen denen 9 eingefügt 
werden müsste; wäre eine 9 im Array enthalten, würde man die damit nicht 
finden.

von Adam P. (adamap)


Lesenswert?

Peter schrieb:
> if (Array[i]< 9 && Array[i] > 9)

Also das könntest auch ruhig so schreiben:
1
if (Array[i] != 9)

Mich verwirrt jedoch deine Frage und dein Code.

In der Frage möchtest du nach dem Index suchen wo 9 hinterlegt ist,
im Code suchst du jedoch den Index vorher und nachher wo die 9 zwischen 
passen würde.

Das sind zwei verschiedene Probleme.

von --- (Gast)


Lesenswert?

Adam P. schrieb:
> Peter schrieb:
>> if (Array[i]< 9 && Array[i] > 9)
>
> Also das könntest auch ruhig so schreiben:
> if (Array[i] != 9)

Das ist aber schon ein gewaltiger Unterschied.
Die Sache mit dem logischen UND bzw. ODER solltest Du Dir nochmal zu 
Gemüte führen. Korrekt wäre die Vereinfachung:
1
if( false )
Oder noch vereinfachter den Codeteil gleich komplett löschen.

von Wolfgang (Gast)


Lesenswert?

Cyblord -. schrieb:
> Abgesehen davon dass der gesuchte Wert wohl nicht da ist, ist die
> trivialste Strategie einfach alle Werte durchzugehen. Sind die Werte
> willkürlich sortiert, bleibt meist gar nichts anderes übrig.

Egal, wie die Zahlen sortiert sind, kann man auch bei jeder 
willkürlichen Sortierung Suchaufwand sparen, wenn man weiß, wo in dieser 
Sortigung die 9 zu finden wäre.

Oder meintest du vielleicht unsortiert?

von Cyblord -. (cyblord)


Lesenswert?

Wolfgang schrieb:
> Egal, wie die Zahlen sortiert sind, kann man auch bei jeder
> willkürlichen Sortierung Suchaufwand sparen, wenn man weiß, wo in dieser
> Sortigung die 9 zu finden wäre.

Tja, für beliebige Sortierungen weißt du das aber in der Regel nicht. 
Damit ist deine Aussage sehr schwach. Nehmen wir an die Zahlen sind nach 
der Niederschlagsmenge der letzten 100 Jahre sortiert. Findest du jetzt 
die 9 schneller?

> Oder meintest du vielleicht unsortiert?

Wie ich oben zeigte ist das egal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.