in for schleife suchen

#5613076
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.
Gast #5613109
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.
Gast #5613110
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.
Beitrag #5613124 wurde von einem Moderator gelöscht.
Beitrag #5613134 wurde von einem Moderator gelöscht.
#5613184
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
#5613444
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.
Gast #5613786
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.
Gast #5613800
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?
#5614105
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.