Praktikum 4 angefangen
This commit is contained in:
parent
aac55ce473
commit
d4c2ce5bc4
Binary file not shown.
|
@ -12,5 +12,79 @@
|
||||||
* @brief Lab implementation
|
* @brief Lab implementation
|
||||||
*/
|
*/
|
||||||
// begin students to add code for task 4.1
|
// begin students to add code for task 4.1
|
||||||
|
#define EOL 10
|
||||||
|
#define PARSE_ERROR -1
|
||||||
|
#define READ_ERROR -2
|
||||||
|
#define ASCII_SPACE 32
|
||||||
|
#define ASCII_DIGIT_0 48
|
||||||
|
#define ASCII_DIGIT_9 57
|
||||||
|
#define NO_POS -1
|
||||||
|
#define BUFFERSIZE 10
|
||||||
|
#define EOF -1
|
||||||
|
int getInt(int maxResult) {
|
||||||
|
// end of input
|
||||||
|
//int EOF = -1; // end of file
|
||||||
|
//int EOL = 10; // end of line
|
||||||
|
// abnormal return values
|
||||||
|
//int PARSE_ERROR = -1;
|
||||||
|
//int READ_ERROR = -2;
|
||||||
|
// ASCII Codes
|
||||||
|
//int ASCII_SPACE = 32; // ' '
|
||||||
|
//int ASCII_DIGIT_0 = 48; // '0'
|
||||||
|
//int ASCII_DIGIT_9 = 57; // '9'
|
||||||
|
|
||||||
|
// conversion buffer
|
||||||
|
//int NO_POS = -1;
|
||||||
|
//int BUFFERSIZE = 10;
|
||||||
|
char buffer[BUFFERSIZE] = {0};
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
// read line: up to EOL or EOF (i.e. error while reading)
|
||||||
|
int bytes = 0;
|
||||||
|
int input;
|
||||||
|
scanf("%d", &input);
|
||||||
|
while ((input != EOL) && (input != EOF)) { // read whole line
|
||||||
|
if (bytes < BUFFERSIZE) { // only buffer first n characters
|
||||||
|
buffer[bytes] = (char)input;
|
||||||
|
bytes++;
|
||||||
|
} else {
|
||||||
|
result = PARSE_ERROR; // exceed buffer size, continue read line
|
||||||
|
}
|
||||||
|
scanf("%d", &input);
|
||||||
|
}
|
||||||
|
if (input == EOF) {
|
||||||
|
result = READ_ERROR;
|
||||||
|
}
|
||||||
|
// check for numbers: skip leading and trailing spaces
|
||||||
|
// (i.e. this includes all control chars below the space ASCII code)
|
||||||
|
int pos = 0;
|
||||||
|
while((pos < bytes) && (buffer[pos] <= ASCII_SPACE)) pos++; // skip SP
|
||||||
|
int posOfFirstDigit = pos;
|
||||||
|
int posOfLastDigit = NO_POS;
|
||||||
|
while ((pos < bytes)
|
||||||
|
&& (buffer[pos] >= ASCII_DIGIT_0)
|
||||||
|
&& (buffer[pos] <= ASCII_DIGIT_9))
|
||||||
|
{
|
||||||
|
posOfLastDigit = pos;
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
while((pos < bytes) && (buffer[pos] <= ASCII_SPACE)) pos++; // skip SP
|
||||||
|
// produce return value
|
||||||
|
if (result != 0) {
|
||||||
|
// previously detected read or parse error given
|
||||||
|
} else if ((pos != bytes) || (posOfLastDigit == NO_POS)) {
|
||||||
|
result = PARSE_ERROR;
|
||||||
|
} else { // convert number
|
||||||
|
for(int i = posOfFirstDigit; i <= posOfLastDigit; i++) {
|
||||||
|
result = result * 10 + (buffer[i] - ASCII_DIGIT_0);
|
||||||
|
if (result > maxResult) {
|
||||||
|
result = PARSE_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// end students to add code
|
// end students to add code
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
src/read.o: src/read.c /usr/include/stdc-predef.h
|
Binary file not shown.
|
@ -12,5 +12,24 @@
|
||||||
* @brief Lab implementation
|
* @brief Lab implementation
|
||||||
*/
|
*/
|
||||||
// begin students to add code for task 4.1
|
// begin students to add code for task 4.1
|
||||||
|
int Rectangular(int a, int b, int c) {
|
||||||
|
int aS = a*a;
|
||||||
|
int bS = b*b;
|
||||||
|
int cS = c*c;
|
||||||
|
|
||||||
|
int isRightAngled;
|
||||||
|
if ((a == 0) && (b == 0) && (c == 0))
|
||||||
|
isRightAngled = 0;
|
||||||
|
else if ((aS + bS) == cS)
|
||||||
|
isRightAngled = 1;
|
||||||
|
else if ((aS + cS) == bS)
|
||||||
|
isRightAngled = 1;
|
||||||
|
else if ((bS + cS) == aS)
|
||||||
|
isRightAngled = 1;
|
||||||
|
else
|
||||||
|
isRightAngled = 0;
|
||||||
|
|
||||||
|
return isRightAngled;
|
||||||
|
}
|
||||||
|
|
||||||
// end students to add code
|
// end students to add code
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
src/rectang.o: src/rectang.c /usr/include/stdc-predef.h
|
Binary file not shown.
Binary file not shown.
|
@ -15,9 +15,11 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "read.h"
|
#include "read.h"
|
||||||
#include "rectang.h"
|
#include "rectang.h"
|
||||||
|
int getInt(int maxResult);
|
||||||
|
int Rectangular(int a, int b, int c);
|
||||||
/// max side length
|
/// max side length
|
||||||
#define MAX_NUMBER 1000
|
#define MAX_NUMBER 1000
|
||||||
|
#define READ_ERROR -2
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +30,52 @@ int main(void)
|
||||||
{
|
{
|
||||||
// begin students to add code for task 4.1
|
// begin students to add code for task 4.1
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
printf("\nDreiecksbestimmung (CTRL-C: Abbruch)\n");
|
||||||
|
|
||||||
|
int word = 0;
|
||||||
|
int a = 0;
|
||||||
|
int b = 0;
|
||||||
|
int c = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
printf("Seite a: ");
|
||||||
|
word = getInt(MAX_NUMBER);
|
||||||
|
}
|
||||||
|
while ((word < 0) && (word != READ_ERROR));
|
||||||
|
if (word >= 0)
|
||||||
|
a = word;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
|
||||||
|
do {
|
||||||
|
printf("Seite b: ");
|
||||||
|
word = getInt(MAX_NUMBER);
|
||||||
|
}
|
||||||
|
while ((word < 0) && (word != READ_ERROR));
|
||||||
|
if (word >= 0)
|
||||||
|
b = word;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
|
||||||
|
do {
|
||||||
|
printf("Seite c: ");
|
||||||
|
word = getInt(MAX_NUMBER);
|
||||||
|
}
|
||||||
|
while ((word < 0) && (word != READ_ERROR));
|
||||||
|
if (word >= 0)
|
||||||
|
c = word;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (Rectangular(a, b, c) == 1)
|
||||||
|
printf("-> Dreieck %d-%d-%d ist rechtwinklig", a, b, c);
|
||||||
|
else
|
||||||
|
printf("-> Dreieck %d-%d-%d ist nicht rechtwinklig", a, b, c);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
printf("\n\nbye bye\n");
|
||||||
|
|
||||||
// end students to add code
|
// end students to add code
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
src/triangle.o: src/triangle.c /usr/include/stdc-predef.h \
|
||||||
|
/usr/include/stdio.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
|
||||||
|
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/long-double.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
|
||||||
|
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/libio.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/_G_config.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
|
||||||
|
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdarg.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h /usr/include/stdlib.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/floatn.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h src/read.h \
|
||||||
|
src/rectang.h
|
Binary file not shown.
|
@ -0,0 +1,40 @@
|
||||||
|
tests/tests.o: tests/tests.c /usr/include/stdc-predef.h \
|
||||||
|
/usr/include/stdio.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
|
||||||
|
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/long-double.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
|
||||||
|
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/libio.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/_G_config.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
|
||||||
|
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdarg.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h /usr/include/stdlib.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/floatn.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
|
||||||
|
/usr/include/CUnit/Basic.h /usr/include/CUnit/CUnit.h \
|
||||||
|
/usr/include/string.h /usr/include/math.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/math-vector.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/fp-logb.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/fp-fast.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/mathcalls.h \
|
||||||
|
/usr/include/CUnit/CUError.h /usr/include/errno.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/asm/errno.h \
|
||||||
|
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
|
||||||
|
/usr/include/CUnit/TestDB.h /usr/include/setjmp.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/setjmp.h \
|
||||||
|
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
|
||||||
|
/usr/include/CUnit/TestRun.h \
|
||||||
|
/home/vagrant/snp/testlib/include/test_utils.h
|
Binary file not shown.
Loading…
Reference in New Issue