|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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,552 bajtów | Pobierz Pokaż | Przesłany kod, zmodyfikowany pod testy |
2. | vector_utils.c | 1,447 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 | 56,190 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:
gcc -ggdb3 -std=c11 -x c -fdiagnostics-color -pedantic -Werror -Wall -Wextra -fmax-errors=5 -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -D_GNU_SOURCE -D_TEST_BOOTSTRAP -fdump-tree-gimple-lineno=main.c.gimple -c main.c -o main.o
Wynik polecenia (kod błędu = 1):
main.c: In function ‘main’: main.c:17:19: error: unused variable ‘out_size’ [-Werror=unused-variable] int size = 0, out_size = 0; ^~~~~~~~ cc1: all warnings being treated as errors
Wywołanie:
gcc -ggdb3 -std=c11 -x c -fdiagnostics-color -pedantic -Werror -Wall -Wextra -fmax-errors=5 -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -D_GNU_SOURCE -D_TEST_BOOTSTRAP -fdump-tree-gimple-lineno=vector_utils.c.gimple -c vector_utils.c -o vector_utils.o
Wynik polecenia (kod błędu = 0):
Ok!
Wywołanie:
gcc -ggdb3 -std=c11 -x c -fdiagnostics-color -pedantic -Werror -Wall -Wextra -fmax-errors=5 -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -D_GNU_SOURCE -D_TEST_BOOTSTRAP -fdump-tree-gimple-lineno=unit_helper_v2.c.gimple -c unit_helper_v2.c -o unit_helper_v2.o
Wynik polecenia (kod błędu = 0):
Ok!
Wywołanie:
gcc -ggdb3 -std=c11 -x c -fdiagnostics-color -pedantic -Werror -Wall -Wextra -fmax-errors=5 -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -D_GNU_SOURCE -D_TEST_BOOTSTRAP -fdump-tree-gimple-lineno=unit_test_v2.c.gimple -c unit_test_v2.c -o unit_test_v2.o
Wynik polecenia (kod błędu = 0):
Ok!
Wywołanie:
gcc -ggdb3 -std=c11 -x c -fdiagnostics-color -pedantic -Werror -Wall -Wextra -fmax-errors=5 -Wno-error=unused-parameter -Wno-error=parentheses -Wno-parentheses -D_GNU_SOURCE -D_TEST_BOOTSTRAP -fdump-tree-gimple-lineno=rdebug.c.gimple -c rdebug.c -o rdebug.o
Wynik polecenia (kod błędu = 0):
Ok!
Liczba plików poddanych kompilacji: 9
Test został przerwany; Kompilacja zakończyła się błędem
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 |