Napisz funkcję bin2int
, która jako argument przyjmuje wskaźnik do tablicy znaków (np. char* t
) przechowujących 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 slajdzie
126125, wykład 4, ale przechowującej dane typuchar
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. 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
.