2024-12-11 13:39:27 +04:00
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
|
|
|
|
#define MAX_SIZE 10
|
|
|
|
|
|
|
|
|
|
int arr[MAX_SIZE];
|
|
|
|
|
int n = 0;
|
|
|
|
|
|
|
|
|
|
void keyboardInput() {
|
|
|
|
|
printf("n = ");
|
|
|
|
|
if (scanf_s("%d", &n) != 1 || n <= 0 || n > MAX_SIZE) {
|
|
|
|
|
printf("Невереное значение %d.\n", MAX_SIZE);
|
|
|
|
|
n = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("Введенное %d значение: ", n);
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
if (scanf_s("%d", &arr[i]) != 1) {
|
|
|
|
|
printf("Невереное значение\n");
|
|
|
|
|
n = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void oddsX10() {
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
if (arr[i] % 2 == 1) {
|
|
|
|
|
arr[i] *= 10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int findMin() {
|
|
|
|
|
if (n <= 0) return -1;
|
|
|
|
|
int min = arr[0];
|
|
|
|
|
for (int i = 1; i < n; i++) {
|
|
|
|
|
if (arr[i] < min) {
|
|
|
|
|
min = arr[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return min;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int findMax() {
|
|
|
|
|
if (n <= 0) return -1;
|
|
|
|
|
int max = arr[0];
|
|
|
|
|
for (int i = 1; i < n; i++) {
|
|
|
|
|
if (arr[i] > max) {
|
|
|
|
|
max = arr[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return max;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int findLastEven() {
|
|
|
|
|
for (int i = n - 1; i >= 0; i--) {
|
|
|
|
|
if (arr[i] % 2 == 0) {
|
|
|
|
|
return i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int findIndexMin() {
|
|
|
|
|
if (n <= 0) return -1;
|
|
|
|
|
int min = arr[0];
|
|
|
|
|
int minIndex = 0;
|
|
|
|
|
for (int i = 1; i < n; i++) {
|
|
|
|
|
if (arr[i] < min) {
|
|
|
|
|
min = arr[i];
|
|
|
|
|
minIndex = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return minIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int evensMultiplyByMinusOne() {
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
if (arr[i] % 2 == 0) {
|
|
|
|
|
arr[i] = arr[i] * -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void replaceLessThanFourWithFour() {
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
if (arr[i] < 4) {
|
|
|
|
|
arr[i] = 4;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void printElements() {
|
|
|
|
|
if (n == 0) {
|
|
|
|
|
printf("Массив пуст.\n");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
printf("[");
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
printf("%d", arr[i]);
|
|
|
|
|
if (i < n - 1) {
|
|
|
|
|
printf(", ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
printf("]\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: Найти максимальный элемент\n");
|
|
|
|
|
printf("5: Удвоить последний четный элемент\n");
|
|
|
|
|
printf("6: Найти количество четных элементов левее минимального\n");
|
|
|
|
|
printf("7: Все четные элементы массива умножить на -1\n");
|
2024-12-11 14:12:18 +04:00
|
|
|
|
printf("8: Все элементы массива имеюи значения меньше 4 заменить на 4\n");
|
2024-12-11 13:39:27 +04:00
|
|
|
|
printf("0: Выйти из программы\n");
|
|
|
|
|
printf("Выбранная операция >>>>>> ");
|
|
|
|
|
|
|
|
|
|
if (scanf_s("%d", &item) != 1) {
|
|
|
|
|
printf("Неверное значение.\n");
|
|
|
|
|
while (getchar() != '\n');
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 1: keyboardInput(); break;
|
|
|
|
|
case 2: oddsX10(); break;
|
|
|
|
|
case 3: {
|
|
|
|
|
int min = findMin();
|
|
|
|
|
if (min != -1) printf("min = %d\n", min);
|
|
|
|
|
else printf("Массив пуст\n");
|
|
|
|
|
} break;
|
|
|
|
|
case 4: {
|
|
|
|
|
int max = findMax();
|
|
|
|
|
if (max != -1) printf("max = %d\n", max);
|
|
|
|
|
else printf("Массив пуст\n");
|
|
|
|
|
} break;
|
|
|
|
|
case 5: {
|
|
|
|
|
int index = findLastEven();
|
|
|
|
|
if (index >= 0) printf("Последний четный элемент умноженный на 2 = %d\n", arr[index] *= 2);
|
|
|
|
|
else printf("Не число.\n");
|
|
|
|
|
} break;
|
|
|
|
|
case 6: {
|
|
|
|
|
int index = findIndexMin();
|
|
|
|
|
if (index != -1) {
|
|
|
|
|
int cnt = 0;
|
|
|
|
|
for (int i = 0; i < index; i++) {
|
|
|
|
|
if (arr[i] % 2 == 0) cnt++;
|
|
|
|
|
}
|
|
|
|
|
printf("Левее минимального %d четных элементов\n", cnt);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
printf("Массив пуст\n");
|
|
|
|
|
}
|
|
|
|
|
} break;
|
|
|
|
|
case 7: {
|
|
|
|
|
evensMultiplyByMinusOne();
|
|
|
|
|
} break;
|
|
|
|
|
case 8: {
|
|
|
|
|
replaceLessThanFourWithFour();
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
case 0: break;
|
|
|
|
|
default: printf("Неверный номер операции!\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} while (item != 0);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|