Opuszczenie pętli

0

Cześć. Macie jakiś pomysł jak wyjść z tej pętli po znalezieniu pierwszego wystąpienia elementu? np. znajduję szukaną pod indeksem nr 2 i chcę zakończyć pętlę, tak żeby przy kolejnej iteracji (gdy i=3) nie wypisało mi warunku z else, tylko po prostu wyszło z tej pętli. Próbowałem wykombinować coś z break, ale wtedy else nie ma prawa działać.

for (i = 0; i < tablica.Length; i++)
            {
                if (tablica[i] == szukana)
                    Console.WriteLine("Szukana znajduje się pod indexem nr {0}", i);
               
                else
                 Console.WriteLine("Nie znaleziono");
 
            }
1
if (tablica[i] == szukana)
{
    Console.WriteLine("Szukana znajduje się pod indexem nr {0}", i);
    break;
}
0

Program po znalezieniu szukanej, nadal wypisuje else'a (ponieważ iteruje po kolejnych elementach tablicy)

for (i = 0; i < tablica.Length; i++)
            {
                if (tablica[i] == szukana)
                {
                   Console.WriteLine("Szukana znajduje się pod indexem nr {0}", i);
                    break;
                }
                else
                Console.WriteLine("Nie znaleziono");
            }
1

Teraz wygląda dobrze (pomijając formatowanie). Nie uruchamiasz później ponownie tego fragmentu z inną wartością zmiennej szukana?

2

Nie możesz mieć tego else wewnątrz for - na logikę: musisz najpierw przeszukać całą tablicę (nie tylko pierwszy element!), aby wiedzieć, czy dany element się wewnątrz niej znajduje.

int foundAt = -1;

for (i = 0; i < tablica.Length; i++) {
  if (tablica[i] == szukana) {
    foundAt = i;
    break;
  }
}

if (foundAt == -1) {
  Console.WriteLine("Nie znaleziono");
} else {
  Console.WriteLine("Szukana znajduje się pod indexem nr {0}", foundAt);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1