Поменять местами минимальное и максимальное значения массива - 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
- значение элемента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д