Поменять местами последний и максимальный элемент массива - C (СИ)
Формулировка задачи:
Добрый вечер, есть программа она меняет минимальный и максимальный элемент массива.
Нужно еще сделать программку которая меняет местами последний элемент массива и максимальный, то есть
{1,5,3,7,6,4,9,2} - исходной массив
{1,5,3,7,6,4,2,9} - массив после смены.
И если максимальных элементов несколько то взять первый из них.
#include "stdafx.h" #include <stdio.h> #include<conio.h> #include <time.h> #include <Windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int a[100], buf; int i, n, max, min, n_max, n_min; printf("Введите число n:"); scanf_s("%d", &n); if (n <= 5) { printf("Массив должен состоять из 6 и больше чисел.\n"); scanf_s("%d", &n); } srand(time(NULL)); printf("Массив до смены:\n"); for (i = 0; i<n; i++) { a[i] = rand() % 10000; printf("%d\t", a[i]); } printf("\n"); max = a[0]; min = a[0]; for (i = 1; i<n; i++) { if (a[i]>max) { max = a[i]; n_max = i; } if (a[i]<min) { min = a[i]; n_min = i; } } buf = a[n_max]; a[n_max] = a[n_min]; a[n_min] = buf; printf("\nМассив после смены:\n"); for (i = 0; i < n; i++) printf("%d\t", a[i]); _getch(); }
Дописал правильное условие задачи.
Помогите)
ап!!!
Решение задачи: «Поменять местами последний и максимальный элемент массива»
textual
Листинг программы
#include <stdio.h> #include<conio.h> #include <time.h> #include <Windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int a[100], buf; int i, n, max, min, n_max, n_min; printf("Введите число n:"); scanf("%d", &n); if (n <= 5) { printf("Массив должен состоять из 6 и больше чисел.\n"); scanf("%d", &n); } srand(time(NULL)); printf("Массив до смены:\n"); for (i = 0; i<n; i++) { a[i] = rand() % 100; printf("%d\t", a[i]); } printf("\n"); for (i = n-1,max=0; i>=0; i--) { if (a[i]>max) { max = a[i]; n_max = i; } } buf = a[n_max]; a[n_max] = a[n-1]; a[n-1] = buf; printf("\nМассив после смены:\n"); for (i = 0; i < n; i++) printf("%d\t", a[i]); _getch(); }
Объяснение кода листинга программы
В этом коде:
- #include
, #include , #include , #include - подключают необходимые библиотеки для работы с консолью, временной зоной, случайными числами и окнами. - int main() - функция main(), с которой начинается любая программа на C.
- SetConsoleCP(1251);, SetConsoleOutputCP(1251); - устанавливают кодировку консоли как 1251, чтобы правильно отображать кириллицу.
- int a[100], buf; - объявляют массив a размером 100 и переменную buf для временного хранения максимального элемента.
- int i, n, max, min, n_max, n_min; - объявляют переменные для цикла, для хранения максимального и минимального индексов и для временного хранения максимального и минимального элементов.
- printf(
Введите число n:
);, scanf(%d
, &n); - запрашивают у пользователя число n и сохраняют его в переменную n. - if (n <= 5) {, printf(
Массив должен состоять из 6 и больше чисел.\n
);, scanf(%d
, &n); - если n меньше или равно 5, выводят сообщение об ошибке и запрашивают новое значение n. - srand(time(NULL)); - инициализируют генератор случайных чисел текущим временем.
- printf(
Массив до смены:\n
);, for (i = 0; i < n; i++), a[i] = rand() % 100;, printf(%d\t
, a[i]); - выводят сообщениеМассив до смены
, затем заполняют массив случайными числами от 0 до 99 и выводят каждое число на новой строке. - for (i = n-1,max=0; i>=0; i--) - цикл для поиска максимального элемента, начиная с последнего элемента массива.
- if (a[i]>max) - если текущий элемент больше максимального значения, обновляют максимальное значение и запоминают индекс.
- buf = a[n_max];, a[n_max] = a[n-1];, a[n-1] = buf; - меняют местами максимальный и последний элементы массива.
- printf(
\nМассив после смены:\n
);, for (i = 0; i < n; i++), printf(%d\t
, a[i]); - выводят сообщениеМассив после смены
, затем выводят все элементы массива. - _getch(); - используют функцию _getch() для приостановки выполнения программы и ожидания нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д