Поменять местами минимальное и максимальное значения массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача такая: 1. Создаёт динамический (либо статический) массив 2. Заполняет его рандомными числами либо они вводятся с клавиатуры (по желанию пользователя) 3. Находит мин, макс, среднее значения и выводит массив с отклонениями каждого элемента от среднего значения. 4. Выводит позицию мин и макс числа. 5. Меняет местами мин и макс значения. 6. Выводит сумму элементов массива. 7. Циклически сдвигает элементы на n позиций влево или вправо (зависит от пользователя) Программа должна иметь диалог с пользователем (т.е. иметь менюшку) Я сделал 1,2,3(кроме отклонение от среднего значения),4. Помогите сделать все остальное Ну конечно без 6(это я сам знаю как) Спасибо
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
 
void seedrnd();
 
int main()
{
    setlocale(LC_ALL, "");

    int mass[100];
    int n, i;
    char c;
    int min, max, sred;
    int maxI;
    int minI;

    maxI = mass[1];
 
    max = 0;
    sred = 0;;

    printf("Количество элементов массива\n");
    scanf("%d", &n);
 
    printf("Способ заполнения:\n");
    printf("1-рандомно\n");
    printf("1-свои числа\n");
    printf("Выберите вариант\n");
 
    _flushall();
    c = getchar();
    printf("\n");
 
    if(c == '1')
    {
        seedrnd();
        printf("Компьютер выбрал такие числа:\n");
        for( i = 0; i < n; i++)
        {
            mass[i] = rand()%60;
            printf("%d.%u\n", i+1, mass[i]);
 
}
        }
    else if ( c == '2')
    {   printf("Введите элементы массива\n");
        for( i = 0; i < n; i++)
        {
            printf("%d.", i+1);
            scanf("%d", &(mass[i]));
        }
 
    }

    for( i = 0; i < n; i++){
    if (mass[i] < min)
        min = mass[i];
        minI = i;
    }
    printf("минимальное значение =%d\n" , min);
   // printf("минимальный это    %d    элемент в массиве\n", minI);
 
    for( i = 0; i < n; i++)
    {
        if (mass[i] > max)
            max = mass[i];
            maxI = i;
    }
    printf("максимальное значение =%d\n" , max);

    for( i = 0; i < n; i++)
    {
        sred +=mass[i];
 
    }
    printf("Среднее значение= %d\n", sred/n);
 
    for( i = 0; i < n; i++)
    {
        if( mass[i] == max)
            maxI = i+1;
    }
    printf("максимальный это    %d     элемент в массиве\n", maxI);
 
    for( i = 0; i < n; i++)
    {
        if( mass[i] == min)
            minI = i+1;
    }
    printf("минимальный это    %d     элемент в массиве\n", minI);

Решение задачи: «Поменять местами минимальное и максимальное значения массива»

textual
Листинг программы
t = mass[maxI];
 mass[maxI] = mass[minI];
 mass[minI] = t;
for( i = 0; i < n; i++)
 {
 printf("%d.%d\n", i+1, mass[i]);
 }

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

  1. Переменная maxI инициализируется значением индекса максимального элемента массива mass.
  2. Переменная minI инициализируется значением индекса минимального элемента массива mass.
  3. Значение максимального элемента массива mass сохраняется в переменной t.
  4. Значение минимального элемента массива mass присваивается переменной t.
  5. Значение максимального элемента массива mass присваивается элементу массива mass с индексом minI.
  6. Значение минимального элемента массива mass присваивается элементу массива mass с индексом maxI.
  7. Цикл for выполняется для вывода всех элементов массива mass с шагом 1, начиная с элемента с индексом 0.
  8. В каждой итерации цикла for выводится значение элемента массива mass с соответствующим индексом.
  9. Вывод начинается с элемента с индексом 1, так как счет начинается с 0.
  10. Каждый элемент массива mass выводится в формате i.j, где i - номер элемента, а j - значение элемента.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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