Поменять местами минимальное и максимальное значения массива - 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]);
- }
Объяснение кода листинга программы
- Переменная
maxI
инициализируется значением индекса максимального элемента массиваmass
. - Переменная
minI
инициализируется значением индекса минимального элемента массиваmass
. - Значение максимального элемента массива
mass
сохраняется в переменнойt
. - Значение минимального элемента массива
mass
присваивается переменнойt
. - Значение максимального элемента массива
mass
присваивается элементу массиваmass
с индексомminI
. - Значение минимального элемента массива
mass
присваивается элементу массиваmass
с индексомmaxI
. - Цикл
for
выполняется для вывода всех элементов массиваmass
с шагом 1, начиная с элемента с индексом 0. - В каждой итерации цикла
for
выводится значение элемента массиваmass
с соответствующим индексом. - Вывод начинается с элемента с индексом 1, так как счет начинается с 0.
- Каждый элемент массива
mass
выводится в форматеi.j
, гдеi
- номер элемента, аj
- значение элемента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д