Mamy ciąg liczb N{a0..an-1} i chcemy sprawdzić czy jest w tym ciągu jakakolwiek liczba nieparzysta. Możemy to zrobić na wiele sposobów np tak:

for (i=0; i<n && N[i]%2 ==0 ; ++i) ; //tu koniecznie średnik ";"
if (i<n) printf("Tak jest w ciągu liczba nieparzysta\n");
else printf("Nie ma takiej liczby");

Czy możemy zmniejszyć ilość sprawdzań i zapisać pętlę w taki sposób?:

for (i=0; N[i]%2 ==0 ; ++i)

Nie możemy, bo jeżeli ciąg nie zawiera takiej liczby, indeks przekroczy zakres tablicy i dostaniemy [color=#800000][b]SIGSEGV[/b][/color]
Możemy jednak "postawić wartownika" dodając na końcu ciągu dowolną liczbę nieparzystą, zabezpieczając się przed przekroczeniem zakresu. Dodatkowo trzeba zmodyfikować warunek w instrukcji if czyli:

N[n]=1;  //ustawienie wartownika
for (i=0; N[i]%2 ==0 ; ++i) ; //tu koniecznie średnik ";"
if (i<n+1) printf("Tak jest w ciągu liczba nieparzysta\n");
else printf("Nie ma takiej liczby");

Jeżeli przeglądamy ciąg od końca analogicznie wstawiamy wartownika na początku ciągu. Wartownika przystosowujemy odpowiednio do naszych potrzeb. Np może to być jak u nas liczba nieparzysta, liczba parzysta, liczba ujemna, konkretna liczba itd

  • created

    Jan '13
  • last reply

    Sep '15
  • 1

    reply

  • 975

    views

  • 2

    users

  • 1

    like

2 years later

Suggested Topics

Want to read more? Browse other topics in Tutoriale, poradniki or view latest topics.