Week 7 (10.18.)
The practical was held on the 18th of October, Saturday, in place of a day off on the 24th due to a national holiday. Task descriptions are on the portal
Task 1
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void separate(int* input, int size, int* smaller, int* greater,
int* small_count, int* big_count) {
double average = 0;
for (int i = 0; i < size; i++) {
average += input[i];
}
average /= size;
for (int i = 0; i < size; i++) {
if (input[i] < average) {
smaller[(*small_count)++] = input[i];
} else {
greater[(*big_count)++] = input[i];
}
}
}
void print_array(int* arr, int count)
{
for (int i = 0; i < count; i++) {
printf("%d\n", arr[i]);
}
}
int main(void) {
int arr[5] = {1,2,3,4,5};
int smaller[5], greater[5];
int small_count = 0, great_count = 0;
separate(arr, 5, smaller, greater, &small_count, &great_count);
print_array(smaller, small_count);
printf("------\n");
print_array(greater, great_count);
return 0;
}
Task 2
#include <stdio.h>
#include <stdlib.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
void print_array(int* arr, int count)
{
for (int i = 0; i < count; i++) {
printf("%d\n", arr[i]);
}
}
void reverse(int* input, int input_size, int* output) {
for (int i = 0; i < input_size; i++) {
output[i] = input[input_size - i - 1];
}
}
void reverse_in_place(int* input, int input_size)
{
for (int i = 0; i < input_size / 2; i++)
{
swap(&input[i], &input[input_size-i-1]);
}
}
int main(void) {
int input[6] = {1,2,3,4,5,6};
int output[6];
reverse(input,6,output);
print_array(output, 6);
reverse_in_place(input, 6);
print_array(input, 6);
return 0;
}
Task 3
#include <stdio.h>
typedef struct Date {
int year, month, day;
} Date;
typedef struct Competitor {
char name[31];
Date birth;
int rank;
} Competitor;
void filter(Competitor* input, int input_size, Competitor* output, int* output_size) {
//where it places the competitors born before 2000 and ranked in the top 100
for (int i = 0; i < input_size; i++) {
if (input[i].birth.year < 2000 && input[i].rank <= 100)
output[(*output_size)++] = input[i];
}
}
int main(void) {
Competitor input[3] = {
{.name = "Peter", .birth = {.year = 1999, .month = 6, .day = 15}, .rank = 50},
{.name = "Mark", .birth = {.year = 2002, .month = 8, .day = 10}, .rank = 60},
{.name = "John", .birth = {.year = 1999, .month = 4, .day = 5}, .rank = 150},
};
Competitor output[3];
int output_size = 0;
filter(input, 3, output, &output_size);
return 0;
}
- ← Previous
Week 6 (10.17.) - Next →
Week 8 (10.25.)