initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
build/
|
||||||
18
CMakeLists.txt
Normal file
18
CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.21)
|
||||||
|
|
||||||
|
project(LAB16 C)
|
||||||
|
|
||||||
|
set(CMAKE_C_STANDARD 23)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
add_executable(LAB16
|
||||||
|
src/main.c
|
||||||
|
src/LAB1.c
|
||||||
|
src/LAB2.c
|
||||||
|
src/LAB3.c
|
||||||
|
src/LAB4.c
|
||||||
|
src/LAB5.c
|
||||||
|
src/LAB6.c
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(LAB16 PRIVATE include)
|
||||||
11
include/LAB1.h
Normal file
11
include/LAB1.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef LAB1_H
|
||||||
|
#define LAB1_H
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
double y(double x);
|
||||||
|
double z(double v, double w);
|
||||||
|
|
||||||
|
void lab_1();
|
||||||
|
|
||||||
|
#endif
|
||||||
8
include/LAB2.h
Normal file
8
include/LAB2.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef LAB2_H
|
||||||
|
#define LAB2_H
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
void lab_2();
|
||||||
|
|
||||||
|
#endif
|
||||||
24
include/LAB3.h
Normal file
24
include/LAB3.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#ifndef LAB3_H
|
||||||
|
#define LAB3_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
double x;
|
||||||
|
} Context;
|
||||||
|
|
||||||
|
typedef double (IterFn)(double, uint32_t);
|
||||||
|
typedef double (LoopFn)(Context* ctx, uint32_t, uint32_t max, IterFn* iter_fn);
|
||||||
|
|
||||||
|
double iter_fn(double x, uint32_t i);
|
||||||
|
|
||||||
|
double for_fn(Context* ctx, uint32_t min, uint32_t max, IterFn* iter_fn);
|
||||||
|
double while_fn(Context* ctx, uint32_t min, uint32_t max, IterFn* fiter_fn);
|
||||||
|
double do_while_fn(Context* ctx, uint32_t min, uint32_t max, IterFn* iter_fn);
|
||||||
|
|
||||||
|
void lab_3();
|
||||||
|
|
||||||
|
#endif
|
||||||
8
include/LAB4.h
Normal file
8
include/LAB4.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef LAB4_H
|
||||||
|
#define LAB4_H
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
void lab_4();
|
||||||
|
|
||||||
|
#endif
|
||||||
8
include/LAB5.h
Normal file
8
include/LAB5.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef LAB5_H
|
||||||
|
#define LAB5_H
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
void lab_5();
|
||||||
|
|
||||||
|
#endif
|
||||||
30
include/LAB6.h
Normal file
30
include/LAB6.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef LAB6_H
|
||||||
|
#define LAB6_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "shared.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char* name;
|
||||||
|
int32_t* ptr;
|
||||||
|
size_t size;
|
||||||
|
} ArrayI32;
|
||||||
|
|
||||||
|
void read_array(ArrayI32* a);
|
||||||
|
void print_array(ArrayI32* a);
|
||||||
|
|
||||||
|
void swap_indices(ArrayI32* array, size_t a, size_t b);
|
||||||
|
void swap_sign(ArrayI32* a);
|
||||||
|
|
||||||
|
size_t positive_count(ArrayI32* a);
|
||||||
|
|
||||||
|
size_t min_element_index(ArrayI32* a);
|
||||||
|
size_t max_element_index(ArrayI32* a);
|
||||||
|
|
||||||
|
ArrayI32 make_an_array(char* name, size_t size);
|
||||||
|
|
||||||
|
void lab_6();
|
||||||
|
|
||||||
|
#endif
|
||||||
11
include/shared.h
Normal file
11
include/shared.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef SHARED_H
|
||||||
|
#define SHARED_H
|
||||||
|
|
||||||
|
#define READ_EXACT(t, out) do { \
|
||||||
|
if (scanf((t), &(out)) == 1) break; \
|
||||||
|
printf("Incorrect input for " #out ", try again: "); \
|
||||||
|
while (getchar() != '\n'); \
|
||||||
|
} \
|
||||||
|
while (1) \
|
||||||
|
|
||||||
|
#endif
|
||||||
34
src/LAB1.c
Normal file
34
src/LAB1.c
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "../include/LAB1.h"
|
||||||
|
|
||||||
|
double z(double v, double w)
|
||||||
|
{
|
||||||
|
return (w <= -3 ) ? v + w + 3
|
||||||
|
: (w < 2)
|
||||||
|
? w + 4.5
|
||||||
|
: v - w;
|
||||||
|
}
|
||||||
|
|
||||||
|
double y(double x)
|
||||||
|
{
|
||||||
|
return (x <= 0)
|
||||||
|
? (log10(fabs(x) / 100 - 0.01) + 2 * x) / (2 * x - 2)
|
||||||
|
: (log10(fabs(x) / 100 - 0.01) + 2 * x) / (x - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lab_1()
|
||||||
|
{
|
||||||
|
double x = 0.0;
|
||||||
|
printf("Enter [x]: ");
|
||||||
|
READ_EXACT("%lf", x);
|
||||||
|
|
||||||
|
printf("y(x=%lf) = %lf\n", x, y(x));
|
||||||
|
|
||||||
|
double v = x, w = 0.0;
|
||||||
|
printf("V = %lf\nEnter [W]: ", v);
|
||||||
|
READ_EXACT("%lf", w);
|
||||||
|
|
||||||
|
printf("Z(V=%lf,W=%lf) = %lf\n", v, w, z(v, w));
|
||||||
|
}
|
||||||
39
src/LAB2.c
Normal file
39
src/LAB2.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "../include/LAB2.h"
|
||||||
|
#include "../include/LAB1.h"
|
||||||
|
|
||||||
|
void lab_2()
|
||||||
|
{
|
||||||
|
double v = 0.0, w_min = 0.0, w_max = 0.0;
|
||||||
|
uint32_t d = 0;
|
||||||
|
|
||||||
|
printf("Enter [V]: ");
|
||||||
|
READ_EXACT("%lf", v);
|
||||||
|
|
||||||
|
printf("Enter [W_min]: ");
|
||||||
|
READ_EXACT("%lf", w_min);
|
||||||
|
|
||||||
|
printf("Enter [W_max]: ");
|
||||||
|
READ_EXACT("%lf", w_max);
|
||||||
|
|
||||||
|
printf("Enter [d]: ");
|
||||||
|
READ_EXACT("%d", d);
|
||||||
|
|
||||||
|
printf("Z(V=%lf, W=[%lf; %lf]): [ ", v, w_min, w_max);
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < d; ++i)
|
||||||
|
{
|
||||||
|
double w = w_min + (w_max - w_min) * ((double)i / (d - 1));
|
||||||
|
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
printf(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%lf", z(v, w));
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" ]\n");
|
||||||
|
}
|
||||||
99
src/LAB3.c
Normal file
99
src/LAB3.c
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "../include/LAB3.h"
|
||||||
|
|
||||||
|
double iter_fn(double x, uint32_t i)
|
||||||
|
{
|
||||||
|
return tan(fabs(x)) * sqrt(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
double for_fn(Context* ctx, uint32_t min, uint32_t max, IterFn *iter_fn)
|
||||||
|
{
|
||||||
|
double r = 0.0;
|
||||||
|
|
||||||
|
for (uint32_t i = min; i <= max; ++i)
|
||||||
|
{
|
||||||
|
r += iter_fn(ctx->x, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
double while_fn(Context* ctx, uint32_t min, uint32_t max, IterFn *iter_fn)
|
||||||
|
{
|
||||||
|
double r = 0.0;
|
||||||
|
|
||||||
|
uint32_t i = min;
|
||||||
|
while (i <= max)
|
||||||
|
{
|
||||||
|
r += iter_fn(ctx->x, i);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
double do_while_fn(Context* ctx, uint32_t min, uint32_t max, IterFn *iter_fn)
|
||||||
|
{
|
||||||
|
double r = 0.0;
|
||||||
|
|
||||||
|
uint32_t i = min;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
r += iter_fn(ctx->x, i);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
while (i <= max);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lab_3()
|
||||||
|
{
|
||||||
|
Context ctx = { .x = 0 };
|
||||||
|
uint32_t n = 0;
|
||||||
|
|
||||||
|
printf("Enter [x]: ");
|
||||||
|
READ_EXACT("%lf", ctx.x);
|
||||||
|
|
||||||
|
printf("Enter [N]: ");
|
||||||
|
READ_EXACT("%u", n);
|
||||||
|
|
||||||
|
LoopFn* loop_fn;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
printf("Select option:\n\t(f|F|1): for\n\t(w|W|2): while\n\t(d|D|3): do-while\n\t(e|E|4): exit\nOption: ");
|
||||||
|
|
||||||
|
uint8_t opt;
|
||||||
|
READ_EXACT(" %c", opt);
|
||||||
|
|
||||||
|
switch (opt)
|
||||||
|
{
|
||||||
|
case 'f':
|
||||||
|
case 'F':
|
||||||
|
case '1':
|
||||||
|
loop_fn = for_fn;
|
||||||
|
break;
|
||||||
|
case 'w':
|
||||||
|
case 'W':
|
||||||
|
case '2':
|
||||||
|
loop_fn = while_fn;
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
case 'D':
|
||||||
|
case '3':
|
||||||
|
loop_fn = do_while_fn;
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
case '4':
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("y(x=%lf,N=%u) = %lf\n", ctx.x, n, tan(fabs(ctx.x)) * loop_fn(&ctx, 1, n, iter_fn));
|
||||||
|
}
|
||||||
|
}
|
||||||
66
src/LAB4.c
Normal file
66
src/LAB4.c
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "../include/LAB4.h"
|
||||||
|
|
||||||
|
#define MAX_SIZE 15
|
||||||
|
|
||||||
|
void lab_4()
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
printf("Enter array size (1..=15): ");
|
||||||
|
READ_EXACT("%zu", size);
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
{
|
||||||
|
printf("Size cannot be zero, try again\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (size > MAX_SIZE)
|
||||||
|
{
|
||||||
|
printf("Size cannot be greater than %d, try again\n", MAX_SIZE);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (1);
|
||||||
|
|
||||||
|
int32_t* array = malloc(size * sizeof(int32_t));
|
||||||
|
if (array == NULL)
|
||||||
|
{
|
||||||
|
printf("Allocation failure");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < size; ++i)
|
||||||
|
{
|
||||||
|
printf("Enter array[%zu]: ", i);
|
||||||
|
READ_EXACT("%d", array[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t r = 0;
|
||||||
|
|
||||||
|
printf("Array = [ ");
|
||||||
|
for (size_t i = 0; i < size; ++i)
|
||||||
|
{
|
||||||
|
if (array[i] < 0 && abs(array[i]) > 10)
|
||||||
|
{
|
||||||
|
r += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
printf(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d", array[i]);
|
||||||
|
}
|
||||||
|
printf(" ]\nCount of |x| > 10: %d\n", r);
|
||||||
|
|
||||||
|
free(array);
|
||||||
|
}
|
||||||
109
src/LAB5.c
Normal file
109
src/LAB5.c
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "../include/LAB5.h"
|
||||||
|
|
||||||
|
#define N_MAX 5
|
||||||
|
#define M_MAX 5
|
||||||
|
|
||||||
|
void lab_5()
|
||||||
|
{
|
||||||
|
size_t n = 0, m = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
printf("Enter array size N=(1..=5): ");
|
||||||
|
READ_EXACT("%zu", n);
|
||||||
|
|
||||||
|
printf("Enter array size M=(1..=5): ");
|
||||||
|
READ_EXACT("%zu", m);
|
||||||
|
|
||||||
|
if (n == 0)
|
||||||
|
{
|
||||||
|
printf("N size cannot be zero, try again\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (n > N_MAX)
|
||||||
|
{
|
||||||
|
printf("N size cannot be greater than %d, try again\n", N_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m == 0)
|
||||||
|
{
|
||||||
|
printf("M size cannot be zero, try again\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (m > M_MAX)
|
||||||
|
{
|
||||||
|
printf("M size cannot be greater than %d, try again\n", M_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (1);
|
||||||
|
|
||||||
|
int32_t** array = malloc(n * sizeof(int32_t*));
|
||||||
|
if (array == NULL)
|
||||||
|
{
|
||||||
|
printf("Allocation failure");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n; ++i)
|
||||||
|
{
|
||||||
|
array[i] = malloc(m * sizeof(int32_t));
|
||||||
|
|
||||||
|
for (size_t j = 0; j < m; ++j)
|
||||||
|
{
|
||||||
|
printf("Enter array[%zu][%zu]: ", i, j);
|
||||||
|
READ_EXACT("%d", array[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Array = [\n");
|
||||||
|
for (size_t i = 0; i < n; ++i)
|
||||||
|
{
|
||||||
|
printf(" [\t");
|
||||||
|
|
||||||
|
for (size_t j = 0; j < m; ++j)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (j > 0)
|
||||||
|
{
|
||||||
|
printf(",\t");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d", array[i][j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\t]\n");
|
||||||
|
}
|
||||||
|
printf("]\n");
|
||||||
|
|
||||||
|
// ==PRODUCT_OF_MAIN_DIAGONAL==
|
||||||
|
int32_t r = 1;
|
||||||
|
|
||||||
|
size_t d = n < m ? n : m;
|
||||||
|
for (size_t i = 0; i < d; ++i)
|
||||||
|
{
|
||||||
|
r *= array[i][i];
|
||||||
|
}
|
||||||
|
printf("Product of main diagonal = %d\n", r);
|
||||||
|
|
||||||
|
// ==SUM_OF_EVEN_BY_COLUMNS==
|
||||||
|
printf("Sum of even numbers by columns:\n");
|
||||||
|
for (size_t c = 0; c < m; ++c)
|
||||||
|
{
|
||||||
|
int32_t res = 0;
|
||||||
|
|
||||||
|
for (size_t r = 0; r < n; ++r)
|
||||||
|
{
|
||||||
|
if (array[r][c] % 2 == 0)
|
||||||
|
{
|
||||||
|
res += array[r][c];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" Column[%zu] = %d\n", c, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
123
src/LAB6.c
Normal file
123
src/LAB6.c
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "../include/LAB6.h"
|
||||||
|
|
||||||
|
void read_array(ArrayI32* a)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
printf("Enter %s[%zu]: ", a->name, i);
|
||||||
|
READ_EXACT("%d", a->ptr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_array(ArrayI32* a)
|
||||||
|
{
|
||||||
|
printf("%s = [ ", a->name);
|
||||||
|
for (size_t i = 0; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
printf(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d", a->ptr[i]);
|
||||||
|
}
|
||||||
|
printf(" ]\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void swap_indices(ArrayI32* array, size_t a, size_t b)
|
||||||
|
{
|
||||||
|
int32_t t = array->ptr[a];
|
||||||
|
|
||||||
|
array->ptr[a] = array->ptr[b];
|
||||||
|
array->ptr[b] = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
void swap_sign(ArrayI32* a)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
a->ptr[i] *= -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t positive_count(ArrayI32* a)
|
||||||
|
{
|
||||||
|
size_t r = 0;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
if (a->ptr[i] > 0)
|
||||||
|
{
|
||||||
|
++r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t min_element_index(ArrayI32* a)
|
||||||
|
{
|
||||||
|
if (a->size == 0) return 0;
|
||||||
|
|
||||||
|
int32_t r = 0;
|
||||||
|
|
||||||
|
for (size_t i = 1; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
if (a->ptr[i] < a->ptr[r])
|
||||||
|
{
|
||||||
|
r = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t max_element_index(ArrayI32* a)
|
||||||
|
{
|
||||||
|
if (a->size == 0) return 0;
|
||||||
|
|
||||||
|
int32_t r = 0;
|
||||||
|
|
||||||
|
for (size_t i = 1; i < a->size; ++i)
|
||||||
|
{
|
||||||
|
if (a->ptr[i] > a->ptr[r])
|
||||||
|
{
|
||||||
|
r = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayI32 make_an_array(char* name, size_t size)
|
||||||
|
{
|
||||||
|
ArrayI32 r = {.name = name, .size = size};
|
||||||
|
|
||||||
|
r.ptr = (void*)malloc(size * sizeof(int32_t));
|
||||||
|
read_array(&r);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lab_6()
|
||||||
|
{
|
||||||
|
ArrayI32 array_4 = make_an_array("array_4", 4);
|
||||||
|
ArrayI32 array_5 = make_an_array("array_5", 5);
|
||||||
|
ArrayI32 array_6 = make_an_array("array_6", 6);
|
||||||
|
|
||||||
|
swap_sign(&array_4);
|
||||||
|
swap_sign(&array_5);
|
||||||
|
swap_sign(&array_6);
|
||||||
|
|
||||||
|
print_array(&array_4);
|
||||||
|
printf("\tPositive count = %zu\n\n", positive_count(&array_4));
|
||||||
|
|
||||||
|
print_array(&array_5);
|
||||||
|
printf("\tPositive count = %zu\n\n", positive_count(&array_5));
|
||||||
|
|
||||||
|
print_array(&array_6);
|
||||||
|
printf("\tPositive count = %zu\n", positive_count(&array_6));
|
||||||
|
}
|
||||||
33
src/main.c
Normal file
33
src/main.c
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "../include/LAB1.h"
|
||||||
|
#include "../include/LAB2.h"
|
||||||
|
#include "../include/LAB3.h"
|
||||||
|
#include "../include/LAB4.h"
|
||||||
|
#include "../include/LAB5.h"
|
||||||
|
#include "../include/LAB6.h"
|
||||||
|
|
||||||
|
#define LABS_COUNT 6
|
||||||
|
|
||||||
|
static void(*LABS[LABS_COUNT])() = { lab_1, lab_2, lab_3, lab_4, lab_5, lab_6 };
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("Select LAB [1-6]: ");
|
||||||
|
|
||||||
|
uint32_t opt = 0;
|
||||||
|
READ_EXACT("%d", opt);
|
||||||
|
|
||||||
|
if (opt < 1 || opt > LABS_COUNT)
|
||||||
|
{
|
||||||
|
printf("Incorrect index of LAB\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
LABS[opt - 1]();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user