Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
#1

Поменять местами минимальное и максимальное значения массива

13.03.2015, 18:09. Просмотров 639. Ответов 10
Метки нет (Все метки)

Задача такая:
1. Создаёт динамический (либо статический) массив
2. Заполняет его рандомными числами либо они вводятся с клавиатуры (по желанию пользователя)
3. Находит мин, макс, среднее значения и выводит массив с отклонениями каждого элемента от среднего значения.
4. Выводит позицию мин и макс числа.
5. Меняет местами мин и макс значения.
6. Выводит сумму элементов массива.
7. Циклически сдвигает элементы на n позиций влево или вправо (зависит от пользователя)
Программа должна иметь диалог с пользователем (т.е. иметь менюшку)

Я сделал 1,2,3(кроме отклонение от среднего значения),4.
Помогите сделать все остальное
Ну конечно без 6(это я сам знаю как)
Спасибо
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#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);
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2015, 18:09
Ответы с готовыми решениями:

Найти максимальное и минимальное значения массива и поменять их местами
Господа программисты,неофиту очень нужна ваша помощь. Дан одномерный масив...

Функция: поменять местами минимальное и максимальное значение в массиве
Составить программу , в результате работы которой минимальное и максимальное...

Поменять местами столбцы матрицы, содержащие максимальное и минимальное количество четных элементов
Дана целочисленная матрица размера NxM. Поменять местами столбцы матрицы,...

Найти в тексте минимальное и максимальное слово в тексте и поменять местами
Найти в тексте минимальное и максимальное слово в тексте и поменять местами (...

В массиве поменять местами максимальное среди отрицательных элементов и минимальное среди положительных
Две задачи. 1. Массив из 10 элементов. Надо поменять местами максимальное...

10
ILikeDARts
0 / 0 / 1
Регистрация: 11.03.2015
Сообщений: 16
13.03.2015, 19:35 #2
Цитата Сообщение от Vladok Посмотреть сообщение
for( i = 0; i < n; i++){
іf (mass[i] < min)
min = mass[i];
minI = i;
}
minI в конце будет равно n-1, поставь скобки если тебе нужен индекс минимального елемента.
Тоже самое с maxI.

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста
C
1
2
3
int suma = 0;
for ( i = 0; i < n; i++)
suma += mass[i];

Ето сума всех елементов массива.

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста
C
1
2
3
int number = mass[min];
mass[min] = mass[max];
mass[max] = number;

Поменять местами минимальный и максимальный елемент массива.
0
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
13.03.2015, 19:36  [ТС] #3
Это ответ на какой пункт?
0
ILikeDARts
0 / 0 / 1
Регистрация: 11.03.2015
Сообщений: 16
13.03.2015, 19:44 #4
Кликните здесь для просмотра всего текста
C
1
2
3
float mid = (max + min) / 2;
for ( i = 0; i < n; i++)
printf ("\tЕлемент массива: %d, отклонение от среднего значения: %f", mass[i], mass[i] - mid);

Среднее значение я взял типа float для уменьшения потерь. Можеш поменять на int

Добавлено через 2 минуты
Внизу есть комент о чем код
0
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
13.03.2015, 19:53  [ТС] #5
C
1
2
3
4
5
6
7
8
for( i = 0; i < n; i++)
    {
        t = mass[min];
    mass[max] = mass[min];
    mass[min] = t;
 
        printf("%d.%d\n", i+1, mass[i]);
    }
Правильно?
0
ILikeDARts
0 / 0 / 1
Регистрация: 11.03.2015
Сообщений: 16
13.03.2015, 20:01 #6
Ето ты поменял местами min i max. А потом вывел весь массив на екран. Только не делай замену в цыкле. Вроде верно
0
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
13.03.2015, 20:09  [ТС] #7
Этот код не работает
Не знаю почему?
Выводит те же самые массивы что и вначале
0
ILikeDARts
0 / 0 / 1
Регистрация: 11.03.2015
Сообщений: 16
13.03.2015, 21:16 #8
Там должно быть minI i maxI вместо min i max
0
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
13.03.2015, 21:21  [ТС] #9
Это в цикле ?
t = mass[min];
mass[max] = mass[min];
mass[min] = t;
????

Добавлено через 1 минуту
НЕ РАБОТАЕТ!!!!
0
ILikeDARts
0 / 0 / 1
Регистрация: 11.03.2015
Сообщений: 16
13.03.2015, 22:13 #10
Лучший ответ Сообщение было отмечено Vladok как решение

Решение

C
1
2
3
4
5
6
7
t = mass[maxI];
 mass[maxI] = mass[minI];
 mass[minI] = t;
for( i = 0; i < n; i++)
 {
 printf("%d.%d\n", i+1, mass[i]);
 }
0
Vladok
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
13.03.2015, 22:31  [ТС] #11
Спасибо
Все зароботало
0
13.03.2015, 22:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2015, 22:31

Найти максимальное число и поменять его местами с четверым от конца элементом массива
Помогите пожалуйста Найти максимальное число и поменять его местами с...

Поменять значения массива местами
Вообщем задача найти максимальный и минимальный элемент массива и поменять их...

Преобразовать текст, поменяв местами максимальное и минимальное предложения
Всем привет! :good: Уважаемые господа! Кому не сложно посмотрите это задание:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru