diff --git a/ConsoleApplication1/ConsoleApplication1.cpp b/ConsoleApplication1/ConsoleApplication1.cpp index 5f28270..119ac1b 100644 --- a/ConsoleApplication1/ConsoleApplication1.cpp +++ b/ConsoleApplication1/ConsoleApplication1.cpp @@ -1 +1,357 @@ - \ No newline at end of file +#include +#include + +#define NUM_ELEMENTS 10 + +int arr[NUM_ELEMENTS]; +int n = 0; +void printElements() { + printf("< "); + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf(">\n"); +} +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 biggerten() { + int cnt = 0; + for (int i = 0; i < n; i++) { + if (arr[i] > 10) cnt++; + } + printf("%d элементов больше чем 10", cnt); +} +int FindLastEven() { + for (int i = n - 1; i > 0; i--) { + if (arr[i] % 2 == 0) return i; + } +} +int findIndexMin() { + int min = arr[0]; + int inMin = 0; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + inMin = i; + } + } + return inMin; +} +int findIndexMax() { + int max = arr[0]; + int inmx = 0; + for (int i = 1; i < n; i++) { + if (arr[i] > max) { + max = arr[i]; + inmx = i; + } + } + return inmx; +} +void bred() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + arr[i] = -1 * arr[i]; + } + } +} +void bred1() { + for (int i = 0; i < n; i++) { + if (arr[i] < 4) { + arr[i] = 4; + } + } +} +void bred2() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + arr[i] = 0; + } + } +} +int FindFirstEven() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + return i; + } + } + return -1; +} +void deletElement(int dl) { + for (int i = dl; i < n - 1; i++) { + arr[i] = arr[i + 1]; + } + n--; +} +void insertElement(int ins, int val) { + for (int i = n; i > ins; i--) { + arr[i] = arr[i - 1]; + } + n++; + arr[ins] = val; +} +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: x2 для последнего четного элемента\n"); + printf("6: Сколько четных левее минимального\n"); + printf("7: x10 для нечетных правее минимального\n"); + printf("8: переставить месами min и max\n"); + printf("9: Все четные элементы массива умножить на -1\n"); + printf("10: Все элементы массива имеющие значения меньше 4 заменить на 4\n"); + printf("11: Все четные элементы обнулить\n"); + printf("12: Все элементы стоящие между максимальным и минимальным увеличить в 10 раз\n"); + printf("13: Все элементы между первым и последним четным увеличить в 100 раз\n"); + printf("14: удалить заданный элемент\n"); + printf("15: Вставить новый элемент в заданное место\n"); + printf("16: Удалить минимальный элемент\n"); + printf("17: Перед минимальным элементом встваить ноль\n"); + printf("18: Удалить все четные элементы\n"); + printf("19: Продублировать все четные элементы\n"); + printf("20: Добавить в начало элемент, равный минимальному\n"); + printf("21: Удалить из массива все элементы, значение которых меньше 4\n"); + printf("22: удалить первый из четных элементов\n"); + printf("23: удалить четные элементы, стоящие после максимального\n"); + printf("24: удалить самую длинную цепочку четных элементов\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); + } + case 4: + biggerten(); + break; + case 5: + { + int index = FindLastEven(); + if (index >= 0) arr[index] *= 2; + } + case 6: + { + int indEx = findIndexMin(); + printf("Индекс минимального элемента = %d\n", indEx); + + int cnt = 0; + for (int i = 0; i < indEx; i++) { + if (arr[i] % 2 == 0) cnt++; + } + printf("Левее минимального %d четных элементов\n", cnt); + } + break; + case 7: + { + int index = findIndexMin(); + printf("Индекс минимального элемента = %d\n", index); + for (int i = n; i > index; i--) { + if (arr[i] % 2 != 0) arr[i] *= 10; + } + } + break; + case 8: + { + int indexmin = findIndexMin(); + printf("Индекс минимального элемента = %d\n", indexmin); + int indexmax = findIndexMax(); + printf("Индекс максимального элемента = %d\n", indexmax); + int tmp = arr[indexmin]; + arr[indexmin] = arr[indexmax]; + arr[indexmax] = tmp; + } + break; + case 9: + bred(); + break; + case 10: + bred1(); + break; + case 11: + bred2(); + break; + case 12: + { + int indexmin = findIndexMin(); + printf("Индекс минимального элемента = %d\n", indexmin); + int indexmax = findIndexMax(); + printf("Индекс максимального элемента = %d\n", indexmax); + for (int i = indexmax + 1; i < indexmin; i++) { + arr[i] *= 10; + } + } + break; + case 13: + { + int indexf = FindFirstEven(); + printf("Индекс минимального элемента = %d\n", indexf); + int indexl = FindLastEven(); + printf("Индекс максимального элемента = %d\n", indexl); + for (int i = indexf + 1; i < indexl; i++) { + arr[i] *= 100; + } + } + break; + case 14: + { + int index; + printf("Индекс удаляемого элемента = "); + scanf_s("%d", &index); + deletElement(index); + } + break; + case 15: + { + int index; + int value; + printf("Перед каким элементом нужно вставить новый? Индекс = "); + scanf_s("%d", &index); + printf("Значение которое нужно вставить = "); + scanf_s("%d", &value); + insertElement(index, value); + } + break; + case 16: + { + int min = findIndexMin(); + printf("min=%d\n", arr[min]); + deletElement(min); + } + break; + case 17: + { + int inmn = findIndexMin(); + printf("Индекс минимального элемента = %d\n", inmn); + insertElement(inmn, 0); + } + break; + case 18: + { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + deletElement(i); + i--; + } + } + + } + break; + case 19: + { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + insertElement(i, arr[i]); + i++; + } + } + } + break; + case 20: + { + int inmn = findIndexMin(); + printf("Индекс минимального элемента = %d\n", inmn); + insertElement(0, arr[inmn]); + } + break; + case 21: + { + for (int i = 0; i < n; i++) { + if (arr[i] < 4) { + deletElement(i); + i--; + } + } + } + break; + case 22: + { + int indexf = FindFirstEven(); + printf("Индекс минимального элемента = %d\n", indexf); + deletElement(indexf); + } + break; + case 23: + { + int indexmax = findIndexMax(); + printf("Индекс максимального элемента = %d\n", indexmax); + for (int i = indexmax + 1; i < n; i++) { + if (arr[i] % 2 == 0) { + deletElement(i); + i--; + } + } + } + break; + case 24: + { + int teklen = 0, teknach = -1; + int maxlen = 0, maxnach = -1; + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + if (teklen == 0) { + teknach = i; + } + teklen++; + } + else { + if (teklen > maxlen) { + maxlen = teklen; + maxnach = teknach; + } + teklen = 0; + } + } + if (teklen > maxlen) { + maxlen = teklen; + maxnach = teknach; + } + if (maxnach != -1) { + for (int i = 0; i < maxlen; i++) { + deletElement(maxnach); + } + } + } + break; + } + } while (item != 0); +}