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
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
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.
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
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.
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
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.
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.