First/FIRST/FIRST.cpp
2024-11-06 14:50:01 +04:00

293 lines
6.1 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 NUM_ELEMENTS 10
int arr[NUM_ELEMENTS] = { 7, 3, 6, 1, 9, 5, 2, 4, 8 }; // Исходный массив для примера
int n = 9;
void printElements() {
printf("< ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf(">\n");
}
void addElement(int value) {
arr[n++] = value;
}
void keyboardInput() {
printf("n = ");
scanf_s("%d", &n);
printf("input %d vales: ", n);
for (int i = 0; i < n; i++) {
scanf_s("&d", &arr[i]);
}
printElements();
}
void oddsX10() {
for (int i = 0; i < n; i++) {
if (arr[i] % 2 != 0) {
arr[i] = arr[i] * 10;
}
}
}
void odds() {
int lastIn = -1;
for (int i = 0; i < n; i++) {
if (arr[i] % 2 != 0) {
lastIn = i;
}
}
if (lastIn != -1) {
n++;
for (int i = n - 1; i > lastIn + 1; i--) {
arr[i] = arr[i - 1];
}
arr[lastIn + 1] = 0;
printElements();
}
}
int findMin() {
int min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
int tenElement() {
int count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 10) {
count++;
}
}
return count;
}
int findLastEven() {
for (int i = n - 1; i >= 0; i--) {
if (arr[i] % 2 == 0) {
return i;
}
}
return -1;
}
int findIndexMin() {
int minIndex = 0;
for (int i = 1; i < n; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
return minIndex;
}
void negateEvenElements() {
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 0) {
arr[i] = arr[i] * -1;
}
}
printf("Массив после умножения четных элементов на -1: ");
printElements();
}
void replaceLessThanFour() {
for (int i = 0; i < n; i++) {
if (arr[i] < 4) {
arr[i] = 4;
}
}
printf("Массив после замены значений < 4 на 4: ");
printElements();
}
int findIndexMax() {
int maxIndex = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
return maxIndex;
}
void replaceBeforeMaxWithZero() {
int maxIndex = findIndexMax();
for (int i = 0; i < maxIndex; i++) {
arr[i] = 0;
}
printf("Массив после замены элементов перед максимальным на 0: ");
printElements();
}
void deleteElement(int index) {
if (index < 0 || index >= n) {
printf("Неверный индекс!\n");
return;
}
for (int i = index; i < n - 1; i++) {
arr[i] = arr[i + 1];
}
n--;
printf("Массив после удаления элемента на индексе %d: ", index);
printElements();
}
void insertElement(int index, int value) {
if (index < 0 || index >= n || n >= NUM_ELEMENTS) {
printf("Неверный индекс!\n");
return;
}
for (int i = n; i > index; i--) {
arr[i] = arr[i - 1];
}
arr[index] = value;
n++;
printf("Массив после вставки элемента %d на индекс %d: ", value, index);
printElements();
}
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: Удвоение последнего четного элемента\n");
printf("6: Сколько четных левее минимального\n");
printf("7: Все четные элементы массива умножить на -1\n");
printf("8: Массив после замены значений < 4 на 4\n");
printf("9: Массив после замены элементов перед максимальным на 0\n");
printf("10: Удаление элемента по идексу\n");
printf("11: Добавление элемента по индексу\n");
printf("11: Добавление элемента по индексу\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 count = tenElement();
printf("Элементов больше 10: %d\n", count);
}
break;
case 5: {
int index = findLastEven();
if (index >= 0) {
arr[index] *= 2;
printf("Последний четный элемент удвоен: %d\n", arr[index]);
}
else {
printf("Четных элементов в массиве нет.\n");
}
}
break;
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:
negateEvenElements();
break;
case 8:
replaceLessThanFour();
break;
case 9:
replaceBeforeMaxWithZero();
break;
case 10:
{
int index;
printf("Введите элемент для удаления: ");
scanf_s("%d", &index);
deleteElement(index);
break;
}
case 11:
{
printf("Индекс: ");
int index;
scanf_s("%d", &index);
printf("Значение, которое нужно вставвить: ");
int value;
scanf_s("%d", &value);
insertElement(index, value);
}
break;
case 12:
{
int minIndex = findIndexMin();
printf("Минимальный элемент: %d\n", arr[minIndex]);
deleteElement(minIndex);
printElements();
}
break;
case 13: {
int Indexmin = findIndexMin();
printf("Индекс минимального элемента = %d\n", Indexmin);
insertElement(Indexmin, 0);
}
break;
case 14:
odds();
break;
}
} while (item != 0);
}