commit 3d7815da13326f93bae7a46555810c1713d4a1b9 Author: DIvan2000 Date: Sat Nov 30 12:51:43 2024 +0400 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cd531cf --- /dev/null +++ b/.gitignore @@ -0,0 +1,54 @@ +# ---> C +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9f3d58 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# InfLab2 + diff --git a/arrays.c b/arrays.c new file mode 100644 index 0000000..da35627 --- /dev/null +++ b/arrays.c @@ -0,0 +1,34 @@ +#include +#include +#include "arrays.h" + +void fill_array(int* arr){ + #if _ARR_SIZE > 5 + for(int i = 0; i < _ARR_SIZE; i++){ + arr[i] = rand()%20-9; + } + #else + for(int i = 0; i < _ARR_SIZE; i++){ + printf("Введите значение для элемента %d: ", i); + scanf("%d", &arr[i]); + } + #endif +} + +void print_array(int* arr){ + printf("["); + for(int i = 0; i < _ARR_SIZE; i++){ + printf("%+d, ", arr[i]); + } + printf("\b\b]\n"); +} + +void print_pointer(int index){ + if(index<0){ + return; + } + for(int i = 0; i < index; i++){ + printf(" "); + } + printf(" ^\n"); +} diff --git a/arrays.h b/arrays.h new file mode 100644 index 0000000..1c3b894 --- /dev/null +++ b/arrays.h @@ -0,0 +1,8 @@ +#ifndef ARRAYS_H_ +#define ARRAYS_H_ +#define _ARR_SIZE 10 + +void fill_array(int* arr); +void print_array(int* arr); +void print_pointer(int index); +#endif diff --git a/main.c b/main.c new file mode 100644 index 0000000..148db4c --- /dev/null +++ b/main.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include "progs.h" + +int main() { + int prog_number; + + srand(time(NULL)); + + printf("Лабораторная работа №2\n\nВариант №2, 6106, автор: Морозов Иван\n\n"); + + printf("Выберите программу: \n\n"); + + printf("1. Программа для нахождения минимального чётного отрицательного элемента массива.\n"); + printf("2. Программа для нахождения индекса первого положительного чётного элемента массива.\n"); + printf("3. Программа для вычисления суммы N членов ряда\n"); + + prog_number = getchar()-'0'; + system("clear"); + + switch(prog_number){ + case 1: + prog1(); + break; + case 2: + prog2(); + break; + case 3: + prog3(); + break; + default: + printf("Ошибка: недопустимый номер программы!\n"); + return 1; + } + return 0; +} diff --git a/prog b/prog new file mode 100755 index 0000000..35ef333 Binary files /dev/null and b/prog differ diff --git a/prog1.c b/prog1.c new file mode 100644 index 0000000..081e2de --- /dev/null +++ b/prog1.c @@ -0,0 +1,28 @@ +#include +#include +#include "progs.h" +#include "arrays.h" + +void prog1(){ + int arr[_ARR_SIZE]; fill_array(arr); + int index = -1; + int value = 0; + + for(int i = 0; i < _ARR_SIZE; i++){ + if(arr[i]=0){ + printf("Минимальный чётный отрицательный элемент равен %d\n", value); + } else{ + printf("В массиве нет ни одного элемента, подходящего под условия\n"); + } +} diff --git a/prog2.c b/prog2.c new file mode 100644 index 0000000..e76f264 --- /dev/null +++ b/prog2.c @@ -0,0 +1,27 @@ +#include +#include +#include "progs.h" +#include "arrays.h" + +void prog2(){ + int arr[_ARR_SIZE]; fill_array(arr); + int index = -1; + + for(int i = 0; i < _ARR_SIZE; i++){ + if(arr[i] > 0 && (arr[i]&1)==0){ + index = i; + break; + } + } + + #if _ARR_SIZE <= 10 + print_array(arr); + print_pointer(index); + #endif + + if(index>=0){ + printf("Первый положительный чётный элемент имеет индекс %d\n", index); + } else{ + printf("В массиве нет ни одного элемента, подходящего под условия\n"); + } +} diff --git a/prog3.c b/prog3.c new file mode 100644 index 0000000..a51be8b --- /dev/null +++ b/prog3.c @@ -0,0 +1,23 @@ +#include +#include +#include "progs.h" + +void prog3(){ + double sum, last, x; + unsigned int n; + printf("Программа приближённо рассчитает сумму N членов ряда.\nВведите данные.\n"); + printf("x: "); scanf("%lf", &x); + printf("N: "); scanf("%ud", &n); + sum = 1; + last = 1; + for(unsigned int i = 1; i<=n; i++){ + double now = last*(-(x*x)/(2*i*(2*i-1))); + sum+=now; + last=now; + } + printf("Сумма %d членов ряда при x=%lf равна %lf\n", n, x, sum); +} + +/* + +*/ diff --git a/progs.h b/progs.h new file mode 100644 index 0000000..4b1d58b --- /dev/null +++ b/progs.h @@ -0,0 +1,8 @@ +#ifndef PROGS_H_ +#define PROGS_H_ + +void prog1(); +void prog2(); +void prog3(); + +#endif