Поменять местами последний и максимальный элемент массива - 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();
}

Объяснение кода листинга программы

В этом коде:

  1. #include , #include , #include , #include - подключают необходимые библиотеки для работы с консолью, временной зоной, случайными числами и окнами.
  2. int main() - функция main(), с которой начинается любая программа на C.
  3. SetConsoleCP(1251);, SetConsoleOutputCP(1251); - устанавливают кодировку консоли как 1251, чтобы правильно отображать кириллицу.
  4. int a[100], buf; - объявляют массив a размером 100 и переменную buf для временного хранения максимального элемента.
  5. int i, n, max, min, n_max, n_min; - объявляют переменные для цикла, для хранения максимального и минимального индексов и для временного хранения максимального и минимального элементов.
  6. printf(Введите число n:);, scanf(%d, &n); - запрашивают у пользователя число n и сохраняют его в переменную n.
  7. if (n <= 5) {, printf(Массив должен состоять из 6 и больше чисел.\n);, scanf(%d, &n); - если n меньше или равно 5, выводят сообщение об ошибке и запрашивают новое значение n.
  8. srand(time(NULL)); - инициализируют генератор случайных чисел текущим временем.
  9. printf(Массив до смены:\n);, for (i = 0; i < n; i++), a[i] = rand() % 100;, printf(%d\t, a[i]); - выводят сообщение Массив до смены, затем заполняют массив случайными числами от 0 до 99 и выводят каждое число на новой строке.
  10. for (i = n-1,max=0; i>=0; i--) - цикл для поиска максимального элемента, начиная с последнего элемента массива.
  11. if (a[i]>max) - если текущий элемент больше максимального значения, обновляют максимальное значение и запоминают индекс.
  12. buf = a[n_max];, a[n_max] = a[n-1];, a[n-1] = buf; - меняют местами максимальный и последний элементы массива.
  13. printf(\nМассив после смены:\n);, for (i = 0; i < n; i++), printf(%d\t, a[i]); - выводят сообщение Массив после смены, затем выводят все элементы массива.
  14. _getch(); - используют функцию _getch() для приостановки выполнения программы и ожидания нажатия клавиши.

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы