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.
- Wpierwszej wersji (zaawansowani mogą ją pominąć) proponuję odwoływać się do elementów tablicy używając indeksów np. tablica[i].
- 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:
- z każdym kandydatem jest związana jeszcze jedna informacja – numer komitetu wyborczego, który zgłasza kandydata,
- 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.