Lab C

Komisja wyborcza

Program dla komisji wyborczej. Dane dla programu:

Program powinien wyprowadzić na ekran dane początkowe. Następnie wywołuje funkcję sortującą, która przestawia dane wejściowe wg malejącej liczby głosów. Po powrocie z funkcji sortującej program wyprowadza na ekran wyniki głosowania wg nowego porządku.

Funkcja sortująca powinna stosować algorytm bąbelkowy (wielokrotnego przeglądania tablicy ze sprawdzaniem poprawności położenia wzajemnego dwóch sąsiednich elementów, a w przypadku niewłaściwej kolejności – ich przestawieniem). Należy zwrócić uwagę na właściwy moment zakończenia przeglądania tak, aby nie powtarzać iteracji niekoniecznych.

  1. Wpierwszej wersji (zaawansowani mogą ją pominąć) proponuję odwoływać się do elementów tablicy używając indeksów np. tablica[i].
  2. W drugiej wersji nie należy używać indeksów – do elementów tablicy proszę odwoływać się stosując zmienne wskaźnikowe. Z uwagi na temat ćwiczenia – wewnętrzna pętla powinna być typu while, nie należy definiować zmiennej oznaczającej numer elementu, lecz dla odwoływania się do kolejnych elementów inkrementować zmienną wskaźnikową.

Inne programy

Zmiana elementów tablicy

W segmencie głównym należy zdefiniować tablicę jednowymiarową, przypisać jej elementom losowe wartości z zakresu [-100, 100], wyprowadzić wartości elementów tablicy na ekran oraz wywołać funkcję, która oblicza ile jest elementów >0 oraz do każdego elementu <0 dodaje 1 (należy użyć operatora ++). Następnie (także w main) wyprowadzić na ekran liczbę elementów dodatnich oraz zawartość tablicy. W wersji rozszerzonej – to samo dla tablicy dwu- i trzywymiarowej.

Ćwiczenie z inkrementacji wskaźników

Proszę przeczytać poniższy program:

      # include <stdio .h>
 
      int main () {
             int tab []={10 ,20 ,30 ,40 ,50 ,60 ,70} , *p= tab +2;
             int i,a,b,c,d,e;
             a =++* p; ;
             printf ("a=%d tab = ",a);
             for (i =0;i <8; i ++) printf ("%d ",tab [i]); printf ("\n");
             b =*++ p;
             printf ("b=%d tab = ",b);
             for (i =0;i <8; i ++) printf ("%d ",tab [i]); printf ("\n");
             c=*p ++;
             printf ("c=%d tab = ",c);
             for (i =0;i <8; i ++) printf ("%d ",tab [i]); printf ("\n");
             d =++*++ p;
             printf ("d=%d tab = ",d);
             for (i =0;i <8; i ++) printf ("%d ",tab [i]); printf ("\n");
             e =++* p ++;
             printf ("e=%d tab = ",e);
             for (i =0;i <8; i ++) printf ("%d ",tab [i]); printf ("\n");
             return 0;
       }

Proszę najpierw przewidzieć, co pojawi się na ekranie, a później sprawdzić, czy przewidywania były słuszne.