diff --git a/lab6/lab6/lab6.cpp b/lab6/lab6/lab6.cpp index 581f8e7..66f031b 100644 --- a/lab6/lab6/lab6.cpp +++ b/lab6/lab6/lab6.cpp @@ -1,20 +1,252 @@ -// lab6.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. -// +#include +#include -#include +#define NUM_ELEMENTS 10 -int main() -{ - std::cout << "Hello World!\n"; +int arr[NUM_ELEMENTS]; +int n = 0; +void printElements(); +void keyboardInput(); +void oddsX10(); +int findMin(); +int count10(); +void findLastEven(); +int findIndexMin(); +void findEven(); +void Less4(); +void NotEven1V2(); +void deleteElement(); +void insertElement(); +void deletemin(); +void Infrontofmin(); +void DeleteLastEven(); + +void main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + int item; + do { + printf("\n"); + printf("------------------------------\n"); + printf("Содержимое массива:"); + printElements(); + printf("Выберите нужную вам операцию:\n"); + printf("1: Ввести с клавиатуры массив\n"); + printf("2: x10 для всех нечетных элементов\n"); + printf("3: Найти минимальный элемент\n"); + printf("4: Найти количество чисел превышающих 10\n"); + printf("5: Найти последний чётный элемент и умножить его на 2\n"); + printf("6: Найти индекс минимального элемента и количество чётных после него\n"); + printf("7: Умножить все элементы в массиве на -1\n"); + printf("8: Все элементы массива имеющие значения меньше 4 заменить на 4\n"); + printf("9: Заменить все нечётные элементы на 1\n"); + printf("11: Удаление заданного элемента массива\n"); + printf("12: Вставка нового элемента по индексу\n"); + printf("13: Удалить минимальный элемент\n"); + printf("14: Перед минимальным элементом поставить 0\n"); + printf("15: Из массива удалить первый из чётных элементов\n"); + printf("\n"); + printf("0: Выйти из программы\n"); + printf("Выбранная операция >>>>>> "); + scanf_s("%d", &item); + switch (item) { + case 1: + keyboardInput(); + break; + + case 2: + oddsX10(); + break; + + case 3: + { + int min = findMin(); + printf("min = %d\n", min); + } + break; + case 4: + { + int ctn = count10(); + printf("cnt=%d\n", ctn); + } + break; + case 5: + findLastEven(); + break; + case 6: + { + int indexMin = findIndexMin(); + printf("Индекс минимального элемента=%d\n", indexMin); + + int cnt = 0; + for (int i = 0; i < indexMin; i++) { + if (arr[i] % 2 == 0) { + cnt++; + } + } + printf("Левее минимального %d чётных элементов\n", cnt); + } + break; + case 7: + findEven(); + break; + case 8: + Less4(); + break; + case 9: + NotEven1V2(); + break; + case 11: + deleteElement(); + break; + case 12: + insertElement(); + break; + case 13: + deletemin(); + break; + case 14: + Infrontofmin(); + break; + case 15: + DeleteLastEven(); + break; + } + } while (item != 0); } - -// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" -// Отладка программы: F5 или меню "Отладка" > "Запустить отладку" - -// Советы по началу работы -// 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 oddsX10() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 1) { + arr[i] = arr[i] * 10; + } + } +} +int findMin() { + int min = arr[0]; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + } + } + return min; +} +void printElements() { + printf("< "); + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf(">\n"); +} +int count10() { + int cnt = 0; + for (int i = 0; i < n; i++) { + if (arr[i] > 10) { + cnt++; + } + } + return cnt; +} +int findIndexMin() { + int min = arr[0]; + int indexMin = 0; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + indexMin = i; + } + } + return indexMin; +} +void findEven() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + arr[i] = arr[i] * -1; + } + } +} +void Less4() { + for (int i = 0; i < n; i++) { + if (arr[i] < 4) { + arr[i] = 4; + } + } +} +void NotEven1V2() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 1) { + arr[i] = 1; + } + } +} +void deleteElement() { + printf("Индекс удаляемого элемента = "); + int index; + scanf_s("%d", &index); + for (int i = index; i < n - 1; i++) { + arr[i] = arr[i + 1]; + } + n--; +} +void insertElement() { + printf("Перед каким элементов нужно вставить новый? Индекс= "); + int index; + scanf_s("%d", &index); + printf("Значение,которое нужно вставить= "); + int value; + scanf_s("%d", &value); + for (int i = n; i > index; i--) { + arr[i] = arr[i - 1]; + } + n++; + arr[index] = value; +} +void deletemin() { + int Indexmin; + Indexmin = findIndexMin(); + for (int i = Indexmin; i < n - 1; i++) { + arr[i] = arr[i + 1]; + } + n--; +} +void Infrontofmin() { + int Indexmin; + Indexmin = findIndexMin(); + int value; + value = 0; + for (int i = n; i > Indexmin; i--) { + arr[i] = arr[i - 1]; + } + n++; + arr[Indexmin] = value; +} +void findLastEven() { + int index = 0; + int value = 0; + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + index = i; + value = 2 * (arr[i]); + } + } + arr[index] = value; +} +void DeleteLastEven() { + int index = 0; + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + index = i; + } + } + for (int i = index; i < n - 1; i++) { + arr[i] = arr[i + 1]; + } + n--; +} \ No newline at end of file