Description
Problem 2.1 Pointer arithmetic (2 points)
Presence assignment, due by 18:30 h today
Write a program that counts the number of elements in an array until encountering the first value
which has the fractional part 0 without the usage of any integer variables for counting.
Your program should read an int for the length of the array and an array of doubles (containing
at least one value with fractional part 0) from the standard input. The number of “real” floating
point values before the first value with fractional part 0 should be outputted on the standard
output.
You can assume that the input will be valid and at least one element with fractional part 0 will be
entered.
Testcase 2.1: input
5
1.2
-3.4
5.00
4
5.45
Testcase 2.1: output
Before the first integer: 2 elements
Problem 2.2 Substring of a string (2 points)
Presence assignment, due by 18:30 h today
Write a program that extracts a substring (specifying two positions for from and until) of a string
putting the result into a dynamically allocated array of chars.
Your program should read from the standard input one string (may be statically allocated with
at most 100 elements) and two positions. The dynamically allocated string containing the result
of the substring operation on the input string should be printed on the standard output. Please
check if the positions are valid or not (you can see the concrete “error” messages which have to
be printed on the screen by submitting your solution and observing the results of the comparisons against the specified testcases). You are not allowed to use the strstr() function from
string.h. You may use pointers and the strcpy() and strncpy() functions.
You can assume that the input will be syntactically valid.
Testcase 2.2: input
onestringtwo
3
8
Testcase 2.2: output
Result of substring(3, 8): string
Problem 2.3 Dynamically allocated matrix comparison (3 points)
Write a program that compares two dynamically allocated matrices based on their elements on
the main and secondary diagonals.
Your program should dynamically allocate the memory for the two input matrices. You should
write functions for reading a matrix from the standard input, printing a matrix to the standard
output and finally a function for comparing the main and secondary diagonals of the two matrices. Do not forget about the allocation and deallocation of the memory.
The main diagonal of a square matrix is the diagonal from the left to the right and the secondary
diagonal is the one from the right to the left.
Your program should read one integer value (the dimension n) and the elements of two integer
matrices from the standard input (first iterating through the rows and then through the columns).
The result of the matrix comparison should be printed on the standard output. In case the result
of the comparison is that they are not identical then the message “The comparison result: NOT
identical” should be printed on the screen.
You can assume that the input will be valid.
Testcase 2.3: input
3
1
2
3
4
5
6
7
8
9
1
0
3
0
5
0
7
0
9
Testcase 2.3: output
Matrix A:
1 2 3
4 5 6
7 8 9
Matrix B:
1 0 3
0 5 0
7 0 9
The comparison result: identical
Problem 2.4 Printing dynamically allocated 3D array sections (4 points)
Write a program that dynamically allocates memory for a 3D array of integers and prints the 2D
sections parallel to the “y0z axis” (considering the array dimensions column-dimension, rowdimension and depth-dimension similar to the geometrical x, y and z dimensions) of a 3D array.
Your program should read three integer values corresponding to the dimensions of a 3D array
and should dynamically allocate the memory for this 3D array. You should write functions for
reading the elements of the 3D array from standard input (first iterating through rows, then
columns and then the depth) and finally a function for printing the 2D sections of the 3D array
which are parallel to the “y0z axis”. Do not forget about the allocation and deallocation of the
memory.
You can assume that the input will be valid.
Testcase 2.4: input
2
2
3
1
2
3
4
4
4
1
2
3
4
4
4
Testcase 2.4: output
Section 1:
1 2 3
1 2 3
Section 2:
4 4 4
4 4 4
How to submit your solutions
• Your source code should be properly indented and compile with gcc without any warnings (You
can use gcc -Wall -o program program.c). Insert suitable comments (not on every line . . . ) to
explain what your program does.
• Please name the programs according to the suggested filenames (they should match the description
of the problem) in Grader. Otherwise you might have problems with the inclusion of header files.
Each program must include a comment on the top like the following:
/*
JTSK-320112
a2 p1.c
Firstname Lastname
myemail@jacobs-university.de
*/
• You have to submit your solutions via Grader at
https://cantaloupe.eecs.jacobs-university.de.
If there are problems (but only then) you can submit the programs by sending mail to
k.lipskoch@jacobs-university.de with a subject line that begins with JTSK-320112.
It is important that you do begin your subject with the coursenumber, otherwise I might have
problems to identify your submission.
• Please note, that after the deadline it will not be possible to submit any solutions. It is useless to send
late solutions by mail, because they will not be accepted.