|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 1,776 bajtów | Pobierz Pokaż | Przesłany kod, zmodyfikowany pod testy |
2. | vector_utils.c | 1,395 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,012 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:
cppcheck --std=c11 --enable=all --xml-version=2 --error-exitcode=42 --includes-file=/usr/include --suppress=missingIncludeSystem --suppress=variableScope --suppress=unmatchedSuppression main.c vector_utils.c vector_utils.h
Wywołanie:
cppcheck-htmlreport --file=cppcheck_log.xml --title=abc --report-dir=cppcheck --source-dir=./ --source-encoding=utf-8
Wywołanie:
scan-build-3.9 -o . -stats -internal-stats --force-analyze-debug-code --keep-empty --status-bugs -o ./clang_tmp -enable-checker alpha.core.CastSize -enable-checker alpha.core.CastToStruct -enable-checker alpha.core.FixedAddr -enable-checker alpha.core.IdenticalExpr -enable-checker alpha.core.PointerArithm -enable-checker alpha.core.PointerSub -enable-checker alpha.core.SizeofPtr -enable-checker alpha.deadcode.UnreachableCode -enable-checker alpha.security.ArrayBound -enable-checker alpha.security.ArrayBoundV2 -enable-checker alpha.security.ReturnPtrRange -enable-checker alpha.unix.Chroot -enable-checker alpha.unix.SimpleStream -enable-checker alpha.unix.Stream -enable-checker alpha.unix.cstring.BufferOverlap -enable-checker alpha.unix.cstring.NotNullTerminated gcc -ggdb3 -O0 -Wall -Wextra -std=c11 -x c -c main.c vector_utils.c vector_utils.h
Cppcheck: Brak błędów/wskazówek; pobierz RAPORT
Clang: Znaleziono błędy/wskazówki; pobierz RAPORT
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#####Wynik: SUKCES⏎ ⏎ TEST 2: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 3: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 4: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 5: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 6: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [1, 3, 1, 6, 2, 4, 3, 5, 1, 6, 7, 4, 1, 4, 9, 2, 5, 0, 4, 5, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 1 3 1 6 2 4 3 5 1 6 7 -2 0 -2 1 -2 2 1 2 1 -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ć: [7, 8, 5, 10, 9, 9, 8, 4, 6, 10, 7, 10, 7, 12, 9, 8, 9, 11, 10, 7, 12, 10, 6, 4, 13, 6, 9, 4, 6, 11, 9, 6, 8, 8, 6, 7, 9, 14, 14, 9, 7, 3, 10, 13, 10, 5, 9, 7, 7, 15, 4, 12, 9, 9, 9, 7, 3, 9, 6, 9, 6, 11, 13, 8, 5, 12, 7, 11, 10, 7, 8, 13, 4, 4, 9, 9, 6, 11, 6, 12, 5, 13, 5, 6, 9, 5, 10, 0]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 7 8 5 10 9 9 8 4 6 10 7 -2 1 -1 -1 0 -2 -2 2 -2 0 1 2 0 -1 -1 2 2 2 2 -1 -1 2 0 -2 1 1 0 1 -2 1 2 0 1 0 -1 1 1 -2 0 0 0 2 1 -1 1 -1 1 -1 -1 -1 -2 2 1 0 2 2 2 2 -2 2 2 -2 -2 0 1 -2 2 0 -2 -2 0 -2 -2 2 -1 2 -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#####Wynik: SUKCES⏎ ⏎ TEST 9: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Wynik: SUKCES⏎ ⏎ TEST 10: Sprawdzanie poprawności działania funkcji create_histogram⏎ #####START##########END#####Powinno być: [3]⏎ ⏎ Tablica po wywołaniu funkcji create_histogram: 11 ⏎ 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***⏎ 1 -2 -9 5 0 -10 0 3 -7 8 7 -6 ***END***⏎ ⏎ ***TEST 4***⏎ ⏎ ***START***⏎ 1 -2 -9 5 0 -10 0 3 -7 8 7 ***END***⏎ Wynik: SUKCES⏎ ⏎ TEST 18: Sprawdzanie poprawności działania funkcji read_vector_float⏎ -10 4 3 2 -8 7 0 ⏎ Wynik: SUKCES⏎ ⏎ TEST 19: Sprawdzanie poprawności działania funkcji read_vector_float⏎ 7 -2 9 -3 0 -10 10 3 -3 9 -4 ⏎ 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⏎ 7 6 5 -4 4 0 -3 -2 8 10 5 6 9 -5 -5 -7 -6 ⏎ Wynik: SUKCES⏎ ⏎ 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: 24 (DONE)⏎ Testy poprawne: 21 (PASSED)⏎ Testy niepoprawne: 3 (FAILED)⏎ Ostrzeżenia: 0 (WARNINGS)⏎ Wycieki zasobów: 0 (LEAKS)⏎
Program zakończony; kod błędu=0 (Ok)
Test został przerwany; TESTY: Niektóre wywołania Twoich funkcji zakończyły się NIEPOMYŚLNIE; Popraw swój kod.
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 |