diff --git a/Lab b/Lab index ae8582a..266eca2 100644 --- a/Lab +++ b/Lab @@ -1,20 +1,176 @@ -// Lab43.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. -// +#include +#include -#include +#define NUM_ELEMENTS 100 -int main() -{ - std::cout << "Hello World!\n"; +int arr[NUM_ELEMENTS]; +int n = 0; +void addLastElement(int a) { + arr[n++] = a; +} +void printElements() { + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf("\n"); } -// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" -// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" +int findMin() { + int min = arr[0]; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + } + } + return min; +} +int findMin2() { + int min = arr[0]; + int o; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + o = i; + } + } + return o; +} +int findMax() { + int max = 0; + int o; + for (int i = 1; i < n; i++) { + if (arr[i] > max && arr[i]%2==0) { + max = arr[i]; + o = i; + } + } + return o; +} -// Советы по началу работы -// 1. В окне обозревателя решений можно добавлять файлы и управлять ими. -// 2. В окне Team Explorer можно подключиться к системе управления версиями. -// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения. -// 4. В окне "Список ошибок" можно просматривать ошибки. -// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода. -// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл. +void keyboardInput() { + printf("n = "); + scanf_s("%d", &n); + + printf("input %d values: ", n); + for (int i = 0; i < n; i++) { + scanf_s("%d", &arr[i]); + } +} +void deleteElement(int a){ + int k = n; + printf("%d", k); + for (; a < n-1; a++) { + arr[a] = arr[a + 1]; + } + n = n - 1; +} +void insertElement(int a,int b){ + addLastElement(arr[n-1]); + int k = n; + int l = b; + printf("%d", k); + for (; a < k; k--) { + arr[k-1] = arr[k-2]; + } + arr[a] = l; +} + + +void minEl0() { + int m = findMin(); + int r; + int k = n; + for (int i = 0; i < n; i++) { + if (arr[i] == m) { + r = i; + } + } + addLastElement(arr[n - 1]); + printf("%d", k); + while (k > 0) { + arr[k] = arr[k - 1]; + k--; + } + arr[r] = 0; +} +void priz() { + int m = findMax(); + addLastElement(arr[n - 1]); + int r; + int k = n; + for (; m+2 < k; k--) { + arr[k] = arr[k - 1]; + k--; + } + arr[m + 1] = 0; +} + + +void main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + int item; + do { + printf("\n"); + printf("------------------------------\n"); + printf("Содержимое массива:"); + printElements(); + printf("Выберите нужную вам операцию:\n"); + printf("1: Ввести с клавиатуры массив\n"); + printf("2: Удалить выбранный элемент\n"); + printf("3: Ввести элемент на выбранное место\n"); + printf("4: Удалить минимальный элемент\n"); + printf("5: Перед минимальным элементом вставить 0\n"); + printf("6: После максимального чётного элемента вставить 0\n"); + + + printf("\n"); + printf("0: Выйти из программы \n"); + printf("Выбранная операция >>>>>> "); + + scanf_s("%d", &item); + switch (item) { + case 1: + keyboardInput(); + break; + + case 2: + printf("Введите индекс удоляемого элемента "); + int a; + scanf_s("%d", &a); + deleteElement(a); + break; + + case 3: + { + printf("Пред каким элементом вставить новый? Индекс = "); + int a; + scanf_s("%d", &a); + + printf("Какое значение вставить = "); + int b; + scanf_s("%d", &b); + + insertElement(a,b); + break; + break; + } + case 4: + { + deleteElement(findMin2()); + break; + } + case 5: + { + minEl0(); + break; + } + case 6: + { + priz(); + break; + } + + } + } while (item != 0); +}