Raport testów maszynowych
Informacje o teście |
Ostatnia modyfikacja | Sat Oct 6 18:36:48 2018 |
Autor | Piotr Duch |
Email | pduch@iis.p.lodz.pl |
W przypadku problemów z rozwiązaniem zadania i/lub zrozumieniem oglądanego właśnie raportu z testów maszynowych, proszę kontaktować się z jego autorem, pod podanym wyżej adresem email. |
| |
Informacje o odpowiedzi |
Przedmiot | PP2: Podstawy Programowania 2 |
Temat | 1. Wskaźniki i tablice |
Zadanie | 12. Histogram |
Metainformacje | subject=16; topic=2001; task=2112; test=2112; reply=358584; user=462; hub=50408 |
Data przesłania odpowiedzi | 2019-08-21T14:24:52+02:00 |
Rozpoczęcie analizy | 2019-08-21 14:25:01.406922 |
Czas analizy | 8.386 sekund |
Status |
Błąd: Program PRZERWANY; miał zwrócić wartość 0 a zakończył się sygnałem SIGSEGV
Przesłana odpowiedź wymaga poprawy!
|
| |
Historia odpowiedzi |
Podejście | 3 |
Poprzednie raporty |
2019-08-21 14:24:01+02:00 | RAPORT | 2019-08-21 14:22:39+02:00 | RAPORT |
|
|
|
Dane wejściowe
[Pokaż]
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
Zawartość przesłanej odpowiedzi |
1. |
main.c |
712 bajtów |
Pobierz Pokaż |
Przesłany kod, zmodyfikowany pod testy |
2. |
vector_utils.c |
2,089 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,379 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 |
Pobierz plik
ZIP ze wszystkimi powyższymi plikami:
source.zip (30,067 bajtów).
Raport z przebiegu kompilacji
[Pokaż]
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 = 0):
Ok!
Plik wygenerowane przez kompilator: main.o (77.52 KB),main.c.gimple (1.54 KB),main.c.sym (12.47 KB)
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!
Plik wygenerowane przez kompilator: vector_utils.o (74.73 KB),vector_utils.c.gimple (16.42 KB),vector_utils.c.sym (12.20 KB)
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!
Plik wygenerowane przez kompilator: unit_helper_v2.o (128.77 KB),unit_helper_v2.c.gimple (28.56 KB)
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!
Plik wygenerowane przez kompilator: unit_test_v2.o (147.87 KB),unit_test_v2.c.gimple (100.11 KB)
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!
Plik wygenerowane przez kompilator: rdebug.o (213.92 KB),rdebug.c.gimple (101.46 KB)
Liczba plików poddanych kompilacji: 9
Raport z przebiegu konsolidacji
[Pokaż]
Wywołanie:
clang-3.9 -ggdb3 -fuse-ld=gold main.o vector_utils.o unit_helper_v2.o unit_test_v2.o rdebug.o -o ./main -Wl,-Map=main.map -Wl,-cref -lm -Wl,-wrap,main
Wynik polecenia (kod błędu = 0):
Ok!
Plik mapy konsolidatora: Pobierz 70.14 KB
Raport analizy statycznej
[Pokaż]
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: Brak błędów/wskazówek; pobierz RAPORT
Test 1: Testy jednostkowe
[Pokaż]
Opis: Analiza wyników funkcji w programie studenta
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ć: [2, 0, 0, 1, 2, 1, 0, 1, 0, 1, 0]⏎
⏎
Tablica po wywołaniu funkcji create_histogram: 8 0 0 0 0 0 0 0 0 0 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⏎
1 -7 -4 -2 8 -3 3 -6 6 2 0 ⏎
-9 -10 -5 -7 -3 0 0 7 -10 -1 ⏎
0⏎
9 1 0 10 4 3 1 0 8 -9 8 -2 -2 3 1 -1 -1 10 -1 0 -2 -10 0 -3 ⏎
Program przerwany; kod błędu=139 (Sygnał SIGSEGV)
Raport postmortem - reakcja na błąd SIGSEGV
[Pokaż]
Źródło błędu
SIGSEGV wykryto w funkcji
??, plik
None:None
Widok kodu źródłowego:
Kolejność wywoływania funkcji (stack trace):
Błąd zarejestrowano w funkcji ?? w linii None:-1
, którą wywołano |
w funkcji ?? wywołanej przez system operacyjny. |
Test został przerwany; Program PRZERWANY; miał zwrócić wartość 0 a zakończył się sygnałem SIGSEGV
Dodatek: Informacje o środowisku uruchomieniowym
[Pokaż]
Wywołanie:
gcc --version
Wynik polecenia (kod błędu = 0):
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Wywołanie:
gold -v
Wynik polecenia (kod błędu = 0):
GNU gold (GNU Binutils for Debian 2.28) 1.14
Wywołanie:
cppcheck --version
Wynik polecenia (kod błędu = 0):
Cppcheck 1.76.1
Wywołanie:
flawfinder --version
Wynik polecenia (kod błędu = 0):
1.31
Wywołanie:
gdb --version
Wynik polecenia (kod błędu = 0):
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Wywołanie:
valgrind --version
Wynik polecenia (kod błędu = 0):
valgrind-3.12.0.SVN
Wywołanie:
objdump --version
Wynik polecenia (kod błędu = 0):
GNU objdump (GNU Binutils for Debian) 2.28
Copyright (C) 2017 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
Wywołanie:
uname -a
Wynik polecenia (kod błędu = 0):
Linux dante 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64 GNU/Linux
Wywołanie:
bash -c "ulimit -a"
Wynik polecenia (kod błędu = 127):
bash: ulimit -a: nie znaleziono polecenia
Wywołanie:
bash -c "dpkg -l | awk "/clang/&&/compiler/""
Wynik polecenia (kod błędu = 127):
bash: dpkg -l | awk /clang/: Nie ma takiego pliku ani katalogu
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 |