test/main.cpp

188 lines
4.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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");
printf("8: Все элементы массива имеющие значения меньше 4 заменить на 4\n");
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;
}