|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Napisz program, który pobierze tablicę liczb rzeczywistych z przedziału <0 - 11) od użytkownika (maksymalnie 100, w przypadku mniejszej liczby danych wartość -1 będzie oznaczała koniec wprowadzania danych) i zapisze je do tablicy. Dla pobranej tablicy wyznacz histogram liczb, zakładając 11 przedziałów: <0;1), <1;2), ... <10; 11).
Histogram wyświetl w postaci ciągu wartości znajdujących się w każdym z 11 przedziałów. Wyniki mają być wyświetlone w jednej linii, oddzielone spacjami.
W przypadku podania błędnych danych program powinien wyświetlić komunikat Incorrect input
i zakończyć działanie z kodem błędu 1
,
w przypadku niepodania żadnej wartości program ma wyświetlić komunikat Not enough data available
i zakończyć działanie z kodem błędu 3
.
Przygotuj funkcje do pobierania danych od użytkownika, wyświetlania danych na konsoli oraz wyznaczania histogramu.
Prototyp funkcji wyznaczającej histogram ma wyglądać następująco:
int create_histogram(const float *vec, int size, int *out, int out_size);
Parametry:
vec
- wskaźnik na tablicę typu float
, dla której ma zostać wyznaczony histogram,size
- liczba elementów w tablicy,out
- wskaźnik na tablicę typu int
, do której ma zostać zapisany histogram o przedziałach <0;1), ..., <out_size-1; out_size).out_size
- zadeklarowany rozmiar tablicy out
.Wartość zwrócona:
1
- w przypadku przekazania do funkcji błędnych danych,0
- w przeciwnym przypadku.Przykładowa interakcja z programem -- sukces:
Podaj liczby: 4.812335 4.005256 2.990941 10.987188 10.223234 5.657190 8.759232 7.377624 4.812679 -1
0 0 1 0 3 1 0 1 1 0 2
Podaj liczby: -4.3 -15.85 -18.22 -15.36 -3.65 -6.94 -5.42 -11.21 -17.25 -1.00⏎
0 0 0 0 0 0 0 0 0 0 0 ⏎
Uwaga
[]
.read_vector_float
z zadania 1.7 Wskaźniki i funkcje - średnia i suma i funkcję display_vector
z zadania 1.8 Sortowanie, deklaracje funkcji umieść w pliku vector_utils.h
, a definicje w pliku vector_utils.c
.
Zawartość przesłanej odpowiedzi | ||||
1. | main.c | 785 bajtów | Pobierz Pokaż | Przesłany kod, zmodyfikowany pod testy |
2. | vector_utils.c | 1,215 bajtów | Pobierz Pokaż | Przesłany kod, zmodyfikowany pod testy |
3. | vector_utils.h | 249 bajtów | Pobierz Pokaż | Przesłany kod |
4. | unit_helper_v2.c | 11,786 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący |
5. | unit_helper_v2.h | 3,974 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący |
6. | unit_test_v2.c | 53,886 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący |
7. | tested_declarations.h | 549 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący, prototypy wymaganych funkcji |
8. | rdebug.c | 45,693 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący |
9. | rdebug.h | 6,417 bajtów | Pobierz Pokaż | Wstrzyknięty kod testujący, prototypy wymaganych funkcji |
Wywołanie:
./main 1
Widok konsoli programu -- przebieg interakcji z użytkownikiem:
### Testy jednostkowe ###
TEST 1: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 2 0 2 2 2 -2 1 1 -2 2 0 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST1(void) z pliku unit_test_v2.c, w linii 76⏎ ⏎ TEST 2: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [5, 1, 3, 5, 7, 4, 2, 5, 4, 3, 3]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 4 3 5 6 9 2 3 4 4 3 2 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST2(void) z pliku unit_test_v2.c, w linii 133⏎ ⏎ TEST 3: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [15, 14, 21, 13, 13, 7, 17, 11, 18, 12, 11]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 15 13 19 14 12 5 16 12 16 10 10 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST3(void) z pliku unit_test_v2.c, w linii 190⏎ ⏎ TEST 4: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [0, 2, 0, 1, 2, 1, 0, 0, 0, 0, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: -2 4 0 3 3 2 2 2 -1 1 -1 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST4(void) z pliku unit_test_v2.c, w linii 247⏎ ⏎ TEST 5: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [7, 4, 2, 2, 5, 5, 2, 4, 9, 5, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 5 5 0 4 4 3 1 5 7 4 -1 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST5(void) z pliku unit_test_v2.c, w linii 304⏎ ⏎ TEST 6: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [3, 0, 2, 1, 7, 0, 1, 2, 1, 4, 3, 2, 4, 5, 2, 2, 4, 3, 2, 5, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 5 2 3 3 6 -2 3 3 0 5 4 3 6 7 3 2 3 1 4 3 2 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST6(void) z pliku unit_test_v2.c, w linii 361⏎ ⏎ TEST 7: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [13, 9, 14, 15, 15, 14, 10, 17, 18, 14, 13, 23, 13, 22, 16, 12, 28, 10, 13, 26, 16, 24, 16, 14, 18, 18, 12, 14, 18, 10, 18, 19, 20, 13, 24, 16, 21, 13, 20, 18, 24, 15, 16, 15, 16, 12, 13, 18, 14, 16, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 12 11 14 13 14 14 8 16 20 12 11 21 12 20 14 10 28 9 15 25 17 25 15 13 18 20 10 16 20 9 19 19 22 13 22 16 21 13 21 16 23 17 16 13 14 14 11 18 12 14 1 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST7(void) z pliku unit_test_v2.c, w linii 418⏎ ⏎ TEST 8: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [6, 3, 6, 4, 9, 2, 5, 6, 5, 2]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 5 5 7 4 7 4 3 6 5 2 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST8(void) z pliku unit_test_v2.c, w linii 475⏎ ⏎ TEST 9: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 1 -1 2 -2 0 0 1 -1 1 -1 1 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST9(void) z pliku unit_test_v2.c, w linii 532⏎ ⏎ TEST 10: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [3]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 4 ⏎ Wynik: PORAŻKA: Funkcja create_histogram() niepoprawnie wypełniła tablicę⏎ Sprawdź funkcję testującą TEST10(void) z pliku unit_test_v2.c, w linii 589⏎ ⏎ TEST 11: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 12: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 13: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 14: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 15: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 16: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 17: Sprawdzanie poprawności działania funkcji display⏎ ⏎ ***TEST 1***⏎ ⏎ ***START***⏎ ***END***⏎ ⏎ ***TEST 2***⏎ ⏎ ***START***⏎ ***END***⏎ ⏎ ***TEST 3***⏎ ⏎ ***START***⏎ 2 0 2 -3 -6 -3 8 5 1 ***END***⏎ ⏎ ***TEST 4***⏎ ⏎ ***START***⏎ 2 0 2 -3 -6 -3 8 5 ***END***⏎ Wynik: SUKCES⏎ ⏎ TEST 18: Sprawdzanie poprawności działania funkcji read_vector_float⏎ 2 -9 -1 -4 -3 -7 2 -7 -6 0 ⏎ Wynik: SUKCES⏎ ⏎ TEST 19: Sprawdzanie poprawności działania funkcji read_vector_float⏎ 5 0 -10 3 -3 8 -8 ⏎ Wynik: SUKCES⏎ ⏎ TEST 20: Sprawdzanie poprawności działania funkcji read_vector_float⏎ 0⏎ Wynik: SUKCES⏎ ⏎ TEST 21: Sprawdzanie poprawności działania funkcji read_vector_float⏎ 0 6 -3 -4 8 1 -5 10 -8 2 10 10 10 8 -4 0 2 -3 -2 -1 ⏎ Wynik: PORAŻKA: Funkcja read_vector_float() powinna zwrócić 5, a zwróciła 0⏎ Sprawdź funkcję testującą TEST21(void) z pliku unit_test_v2.c, w linii 1054⏎ Wynik: PORAŻKA: Funkcja read_vector_float() niepoprawnie pobrał? dane od użytkownika⏎ Sprawdź funkcję testującą TEST21(void) z pliku unit_test_v2.c, w linii 1059⏎ Powinno być: [0.000000, 6.000000, -3.000000, -4.000000, 8.000000]⏎ Jest: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000] ⏎ TEST 22: Sprawdzanie poprawności działania funkcji read_vector_float⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 23: Sprawdzanie poprawności działania funkcji read_vector_float⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 24: Sprawdzanie poprawności działania funkcji read_vector_float⏎ #####START##########END#####Wynik: SUKCES⏎### RLDebug :: Analiza wycieku zasobów ###
Wszystkie bloki pamięci zostały pomyślnie zwolnione - brak wycieków.⏎ Wszystkie pliki zostały zamknięte.⏎ Nie wykryto uszkodzenia sterty.⏎ ⏎### Podsumowanie ###
Testy dostępne: 24 (AVAIL)⏎ Wykonane: 25 (DONE)⏎ Testy poprawne: 13 (PASSED)⏎ Testy niepoprawne: 12 (FAILED)⏎ Ostrzeżenia: 0 (WARNINGS)⏎ Wycieki zasobów: 0 (LEAKS)⏎
Program zakończony; kod błędu=0 (Ok)
Test został przerwany; TESTY: Nie wszystkie testy zostały uruchomione (avail != done)
Objaśnienia oraz informacje dodatkowe:
tekst | Dane wpisywane przez człowieka, z klawiatury (stdin, standard input, standardowy strumień wejścia) |
tekst | Dane wyświetlane przez program, np. funkcją fprintf (stdout, standard output, standardowy strumień wyjścia) |
tekst | Dane wyświetlane przez program, np. funkcją printf (stderr, standard error, standardowy strumień błędów) |
␣ | Wciśnięcie klawisza SPACE |
⏎ | Wciśnięcie klawisza ENTER; znak nowej linii |
? | Znak spoza przestrzeni ASCII; niedopuszczalny |