Поменять местами минимальное и максимальное значения массива - 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- значение элемента.