// fix 2 #include #include #define NUM_ELEMENTS 20 int arr[NUM_ELEMENTS]; int arrHelp[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("введите %d значения: ", 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] *= 10; } } } int findMin() { int min = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] < min) { min = arr[i]; } } return min; } int findMore10() { int count = 0; for (int i = 0; i < n; i++) { if (arr[i] > 10) { count += 1; } } return count; } int findLastEven() { for (int i = n - 1; i >= 0; i--) { if (arr[i] % 2 == 0) { return i; } } return 0; } int findIndexMin() { int min = 0; for (int i = 1; i < n; i++) { if (arr[i] < arr[min]) { min = i; } } return min; } int findIndexMax() { int max = 0; for (int i = 1; i < n; i++) { if (arr[i] > arr[max]) { max = i; } } return max; } void findEvenDigits() { int count = 0; for (int i = findIndexMin(); i >= 0; i--) { if (arr[i] % 2 == 0) { count += 1; } } printf("%d левее минимального", count); } void oddsXMinus1() { for (int i = 0; i < n; i++) { arr[i] *= -1; } } void changeDigitLess4() { for (int i = 0; i < n; i++) { if (arr[i] < 4) { arr[i] = 4; } } } void oddsReplace1() { for (int i = 0; i < n; i++) { arrHelp[i] = arr[i]; } for (int i = 1; i < (n - 1); i++) { if ((arrHelp[i - 1] % 2 == 0) && (arrHelp[i + 1] % 2 == 0)) { arr[i] = 1; } } } void X10BetweenMinMax() { for (int i = findIndexMin() + 1; i < findIndexMax(); i++) { arr[i] *= 10; } } void X100BetweenFirstLastEven() { int firstEvenIndex; int lastEvenIndex; for (int i = 0; i < n; i++) { if (arr[i] % 2 == 0) { firstEvenIndex = i; break; } } for (int i = 0; i < n; i++) { if (arr[i] % 2 == 0) { lastEvenIndex = i; } } for (int i = firstEvenIndex + 1; i < lastEvenIndex; i++) { arr[i] *= 100; } } void deleteElement(int delIndex) { if (delIndex >= 0 && delIndex < n) { for (int i = delIndex; i < n; i++) { arr[i] = arr[i + 1]; } n--; } } void insertElement(int insIndex, int value) { if (insIndex >= 0 && insIndex < n) { for (int i = n; i > insIndex; i--) { arr[i] = arr[i - 1]; } arr[insIndex] = value; n++; } } void delMin() { int min = findIndexMin(); for (int i = min; i < n; i++) { arr[i] = arr[i + 1]; } n--; } void insert0BeforeMin() { int min = findIndexMin(); for (int i = n; i > min; i--) { arr[i] = arr[i - 1]; } arr[min] = 0; n++; } void delAllEven() { for (int i = 0; i < n; i++) { if (arr[i] % 2 == 0) { for (int j = i; j < n; j++) { arr[j] = arr[j + 1]; } n--; } } } int indexMaxEven() { int flag = 0; for (int i = 0; i < n; i++) { if (arr[i] % 2 == 0) { flag = 1; break; } } if (flag == 1) { int max = 0; for (int i = 1; i < n; i++) { if (arr[i] > arr[max] && arr[i] % 2 == 0) { max = i; } } return max; } printf("В массиве нет четных чисел"); } void insAfterMaxEven0() { int maxEven = indexMaxEven(); if (arr[maxEven] % 2 == 0 && arr[maxEven] != 0) { for (int i = n; i > maxEven + 1; i--) { arr[i] = arr[i - 1]; } arr[maxEven + 1] = 0; n++; } } int 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: 2x для последнего четного\n"); printf("6: Сколько чётных левее минимального\n"); printf("7: Все четные элементы умножить на -1\n"); printf("8: Все элементы < 4 заменить на 4\n"); printf("9: Все нечетные элементы заменить на 1\n"); printf("10: Все элементы между максимальным и минимальным увеличить в 10 раз\n"); printf("11: Все элементы между первым и последним четным увеличить в 100 раз\n"); printf("12: Удалить элемент\n"); printf("13: Вставить элемент\n"); printf("14: Удалить минимальный элемент\n"); printf("15: Перед минимальным элементом вставить 0\n"); printf("16: Удалить все четные элементы\n"); printf("17: Вставить после максимального из четных элементов 0\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("мин = %d\n", min); } break; case 4: { int more10 = findMore10(); printf("%d элементов больше чем 10\n", more10); } break; case 5: { int index = findLastEven(); if (index >= 0) { arr[index] *= 2; } } break; case 6: findEvenDigits(); break; case 7: oddsXMinus1(); break; case 8: changeDigitLess4(); break; case 9: oddsReplace1(); break; case 10: X10BetweenMinMax(); break; case 11: X100BetweenFirstLastEven(); break; case 12: { printf("Индекс удаляемого элемента = "); int index; scanf_s("%d", &index); deleteElement(index); } break; case 13: { printf("Индекс вставляемого элемента = "); int index; scanf_s("%d", &index); printf("Значение вставляемого элемента = "); int value; scanf_s("%d", &value); insertElement(index, value); } break; case 14: delMin(); break; case 15: insert0BeforeMin(); break; case 16: delAllEven(); break; case 17: insAfterMaxEven0(); break; }; } while (item != 0); return 0; }