Praktikum 4 angefangen

This commit is contained in:
Didnt Read Readme 2022-03-16 13:47:12 +01:00
parent aac55ce473
commit d4c2ce5bc4
13 changed files with 208 additions and 2 deletions

Binary file not shown.

View File

@ -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

View File

@ -0,0 +1 @@
src/read.o: src/read.c /usr/include/stdc-predef.h

View File

@ -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

View File

@ -0,0 +1 @@
src/rectang.o: src/rectang.c /usr/include/stdc-predef.h

Binary file not shown.

View File

@ -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;
} }

View File

@ -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

View File

@ -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