Napisz funkcję bin2int
, która jako argument przyjmuje wskaźnik do tablicy znaków (np. char* t
) przechowującej liczbę zapisaną w postaci binarnej w taki sposób, że pierwszym znakiem musi być zawsze '1′, tj. np. 1001
, 100
, 10101111
, 1110010
, itp., i która zwróci wartość typu int
odpowiadającą podanej liczbie binarnej (np. dla 1001
będzie to wartość 9
).
Następnie napisz program, który:
- Do dwuwymiarowej tablicy dynamicznej podobnej do tej prezentowanej na slajdach 127 i 128, wykład 4, ale przechowującej dane typu
char
i o wymiarach m wierszy na n kolumn (m i n podane przez użytkownika), wczyta z pliku tekstowego kilka liczb zapisanych w postaci binarnej. W każdym wierszu pliku znajduje się jedna liczba zapisana w taki sposób, że pierwszą cyfrą musi być zawsze 1, tj. np.1001
,100
,10101111
,1110010
, itp. Tak zapisane liczby mogą mieć różną liczbę znaków, ale nie większą niż n-1. W każdym wierszu tablicy przechowywana będzie jedna wczytana liczba. Przyjmij, że liczba wierszy w pliku nie jest znana, ale nie większa niż m, tak aby było wiadomo, że dane zmieszczą się w tablicy. -
Po zakończeniu wczytywania wywoła dla każdego ciągu binarnego z tablicy funkcję
bin2int
, która zwróci wartość typuint
odpowiadającą podanej liczbie binarnej. Zwrócona wartość na być wypisana w oknie konsoli. - Posortuje wczytane ciągi binarne w taki sposób, aby liczby całkowite reprezentowane przez ciągi były uporządkowane malejąco. Przemieszczenia ciągów binarnych nie dokonuj poprzez kopiowanie wartości z jednych tablic dynamicznych do drugich, ale poprzez zamianę położeń wartości wskaźników do dynamicznych tablic przechowujących ciągi binarne. To ważne: aby zmienić porządek, nie wykonuj żadnych alokacji nowych tablic dynamicznych, a jedynie zamieniaj adresy w komórkach tablicy wskaźników. Zastosuj dowolne sortowanie, np. sortowanie przez wybór. Uwaga: przygotuj swój program również na sytuację, kiedy plik z liczbami był pusty.
-
Po zakończeniu przestawiania jeszcze raz wypisze w oknie konsoli wartości liczbowe dla wszystkich ciągów binarnych w tablicy ułożonych wg nowego porządku korzystając z funkcji
bin2int
.
Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 5”.
Hint:
Algorytm sortowania przez wybór:
- Ustaw:
i
= 0 - Wyszukaj w tablicy minimalną wartość spośród elementów od
i
do końca tablicy - Zamień znalezioną wartość minimalną, z wartością na pozycji
i
w tablicy - Wykonaj:
++i
; jeżelii
jest indeksem ostatniego elementu w tablicy to zakończ, w przeciwnym przypadku wróć do kroku nr 2.