Lab C

Komisja wyborcza

Program dla komisji wyborczej. Dane dla programu:

  • lista kandydatów (dla uproszczenia zamiast nazwisk może to być lista identyfikatorów typu całkowitego),
  • lista wyników głosowania (dla uproszczenia – można wygenerować losowo).

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ą.
  • Wersja podstawowa – wybory do senatu – jedynym kryterium porządkowania jest liczba głosów.
  • Wersja rozszerzona – wybory do sejmu:
    1. z każdym kandydatem jest związana jeszcze jedna informacja – numer komitetu wyborczego, który zgłasza kandydata,
    2. lista końcowa zawiera kandydatów (w kolejności otrzymanych głosów) pierwszego komitetu, następnie kandydatów (w kolejności otrzymanych głosów) drugiego komitetu itd.

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.

c-lab6.txt · ostatnio zmienione: 2012/11/14 12:18 przez krzysiek