Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76

Найти среднее арифметическое элементов массива без учёта максимального и минимального элементов

09.01.2016, 19:23. Показов 2915. Ответов 30

Студворк — интернет-сервис помощи студентам
Нужно найти среднее арифметическое элементов массива без учёта максимального и минимального элементов.
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
// Middle arithmetic without min and max elements of array.
#include <iostream>
int main()
{
    int n, a[n], min, max, summ, z;
    float mid;
    printf("Middle arithmetic without min and max elements of array.\n");
    printf("Input quantity of elements in array: ");
    std::cin>>n;
    printf("Input an array: \n");
    for(int i=0; i<n; i++)
    {
        printf("n[%i] -> ", i);
        std::cin>>a[i];
//      summ += a[i];
        if(a[i] != 0) z++;      
        
    }
    for (int j=0; j<n; j++)
    {
        summ += a[j];
        if(a[j] > max ) max = a[j];
        if(a[j]< min ) min = a[j];
    }       
    printf("\nSumm of elements is %i.\n", summ);
//  summ -= min;
    summ -= max;
    mid = summ / (n-2);
    printf("\nEntered array: ");
    for  ( int l = 0; l<n; l++)
        printf("%i ", a[l]);    
//  printf("\nMinimum element is %i.\n", min);
    printf("Maximum elenent is %i.\n", max);
 
    printf("Numbers that are bigger then 0: %i\n", z);
    printf("\nMiddle atithmetic without min and max: %.3f", mid);
 
    std::cin.get();
    return 0;
}
Что здесь сложного? Отдельно друг от друга сумма, мин., и макс. работают, сумма и макс. вместе тоже работают, а мин. приходится комментировать. Но вместе не работают:
C++
1
Process exited after 0.0179 seconds with return value 3221225725
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2016, 19:23
Ответы с готовыми решениями:

Найти среднее значение элементов массива (без учёта максимального и минимального) и вывести результат на экран
Условие задачи (добавлено спустя сутки после начала обсуждения, так что не удивляйтесь): #include &lt;iostream&gt; #include...

Найти среднее арифметическое элементов массива без учета минимального и максимального элементов
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов....

Среднее арифметическое элементов массива без учета минимального и максимального элементов
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива....

30
 Аватар для jonson
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
09.01.2016, 19:36
уверен что это вообще скомпилится?

int n, a[n], min, max, summ, z;
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
09.01.2016, 19:36
Не работает потому что нет первоначальных значении min=max=a[0];
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 19:39
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <algorithm>
 
int main(int argc, char ** argv)
{
  std::vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9};
  
  int sum = std::accumulate(v.begin(), v.end(), 0);
  int min = *(std::min_element(v.begin(), v.end() ));
  int max = *(std::max_element(v.begin(), v.end()));
 
  sum -= min - max;
 
  std::cout << "sum = " << ((double) sum) / v.size() << std::endl;
  std::cout << "min = " << min << std::endl;
  std::cout << "max = " << max << std::endl;
 
  return 0;
}
Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
 
int main(int argc, char ** argv)
{
  std::vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9};
  
  int sum = std::accumulate(v.begin(), v.end(), 0);
  auto minmax = std::minmax_element(v.begin(), v.end());
 
  sum -= *minmax.first - *minmax.second;
 
  std::cout << "sum = " << ((double) sum) / v.size() << std::endl;
  std::cout << "min = " << *minmax.first << std::endl;
  std::cout << "max = " << *minmax.second << std::endl;
 
  return 0;
}
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.01.2016, 19:41
Также нет начальных значений summ и z.
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 19:58  [ТС]
С закомментированным мин. наличие или отсутствие инициализации int n, a[n], min, max, summ, z не играет никакой роли - программа запускается, считает что-то.
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:00
Цитата Сообщение от Salah_Addin Посмотреть сообщение
инициализации int n, a[n], min, max, summ, z не играет никакой роли
каков размер *массива* a[n]?
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:02  [ТС]
Если проверять каждую функцию отдельно, например, сумму, а остальное в комментарий, то работает и правильно считает. Всё вместе - нет.

Добавлено через 1 минуту
Размер массива задаётся пользователем. Но я более 5 пока не использую.
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:03
Цитата Сообщение от Salah_Addin Посмотреть сообщение
Размер массива задаётся пользователем.
Так ты уже объявил массивл a[n], а n еще не инициализировал.
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:13  [ТС]
C++
1
2
printf("Input quantity of elements in array: ");
    std::cin>>n;
После этих двух строк мы уже знаем размер массива. Если вы скомпилируете код в том виде, как он дан, получите ошибку. Далее кидаем в комментарий
C++
1
2
    
//  if(a[j]< min ) min = a[j];
И получаем программу с урезанной функциональностью.

Добавлено через 1 минуту
Отсутствие инициализации a[n], повторяю, не мешает запуску.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.01.2016, 20:14
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
// Middle arithmetic without min and max elements of array.
#include <iostream>
int main()
{
    const int n=5;
    int a[n], min, max, summ=0, z=0;
    float mid;
    //printf("Middle arithmetic without min and max elements of array.\n");
    //printf("Input quantity of elements in array: ");
    //std::cin>>n;
    printf("Input an array: \n");
    for(int i=0; i<n; i++)
    {
        printf("n[%i] -> ", i);
        std::cin>>a[i];
        if(a[i] > 0) z++;      
    }
    min=a[0];
    max=a[0];
    for (int j=0; j<n; j++)
    {
        summ += a[j];
        if(a[j] > max ) max = a[j];
        if(a[j]< min ) min = a[j];
    }       
    printf("\nSumm of elements is %i.\n", summ);
    summ -= min;
    summ -= max;
    mid = summ / (n-2);
    printf("\nEntered array: ");
    for  ( int l = 0; l<n; l++)
        printf("%i ", a[l]);    
    printf("\nMinimum element is %i.\n", min);
    printf("Maximum elenent is %i.\n", max);
 
    printf("Numbers that are bigger then 0: %i\n", z);
    printf("\nMiddle atithmetic without min and max: %.3f", mid);
 
    std::cin.get();
    return 0;
}
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:15
Salah_Addin, ты хорошо подумал? Если работает, это еще не значит что всё хорошо. Переменная n не проинициализирована, а ты уже объявляешь *массив* a[n]. Он может быть какого угодно размера, хоть нулевого. Независимо от того что ты там в твою n ввел.
<fix>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
 
int main(int argc, char ** argv)
{
  std::vector<int> v {1, 2, 3, 4, 5, 6, 7, 8, 9};
  
  int sum = std::accumulate(v.begin(), v.end(), 0);
  auto minmax = std::minmax_element(v.begin(), v.end());
 
  sum -= *minmax.first + *minmax.second;
 
  std::cout << "sum = " << ((double) sum) / v.size() << std::endl;
  std::cout << "min = " << *minmax.first << std::endl;
  std::cout << "max = " << *minmax.second << std::endl;
 
  return 0;
}
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:16  [ТС]
"Так ты уже объявил массивл a[n], а n еще не инициализировал."
То, о чём вы говорите, мы можем получить так:
C++
1
int a[n], n,  min=2, max=0, summ=0, z;
А вот так ошибки нет:
C++
1
int n, a[n],  min=2, max=0, summ=0, z;
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:20

Не по теме:

рукалицо



Добавлено через 41 секунду
в чем разница между словами "инициализация" и "декларация"?
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:25  [ТС]
Даценд, можно подробнее, почему в вашем случае всё работает. Заменяю
C++
1
const int n=5;
на
C++
1
2
3
4
5
6
7
    int n;
    ...
    printf("Middle arithmetic without min and max elements of array.\n");
    printf("Input quantity of elements in array: ");
    std::cin>>n;
    printf("Input an array: \n");
    ...
И дальше не работает. Почему?
0
 Аватар для jonson
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
09.01.2016, 20:26
Цитата Сообщение от Salah_Addin Посмотреть сообщение
А вот так ошибки нет:
Цитата Сообщение от Salah_Addin Посмотреть сообщение
int n, a[n], *min=2, max=0, summ=0, z;
В какой среде удалось это скомпилировать?
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:34  [ТС]
"В чем разница между словами "инициализация" и "декларация"?"
"декларация":
C++
1
int i;
"инициализация":
C++
1
int i=0;
Проверка знаний это хорошо, но много не спрашивайте, я ничего не знаю.

Добавлено через 1 минуту
"В какой среде удалось ..."
Dev-C++
Win7

Добавлено через 5 минут
cyber-satyr, ваш пример у меня не запускается:

список ошибок

c++\Help from forum.cpp In function 'int main(int, char**)':
7 20 c++\Help from forum.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
7 48 с++\Help from forum.cpp [Error] in C++98 'v' must be initialized by constructor, not by '{...}'
7 48 c++\Help from forum.cpp [Error] no matching function for call to 'std::vector<int>::vector(<brace-enclosed initializer list>)'
7 48 c++\Help from forum.cpp [Note] candidates are:
64 0 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\vector In file included from c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\vector
2 c++\Help from forum.cpp from c++\Help from forum.cpp
398 9 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
398 9 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] template argument deduction/substitution failed:
7 48 c++\Help from forum.cpp [Note] cannot convert '3' (type 'int') to type 'const allocator_type& {aka const std::allocator<int>&}'
64 0 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\vector In file included from c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\vector
2 c++\Help from forum.cpp from c++\Help from forum.cpp
310 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
310 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] candidate expects 1 argument, 9 provided
295 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long long unsigned int; std::vector<_Tp, _Alloc>::value_type = int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
295 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] candidate expects 3 arguments, 9 provided
256 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<int>]
256 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] candidate expects 1 argument, 9 provided
248 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] std::vector<_Tp, _Alloc>::vector() [with _Tp = int; _Alloc = std::allocator<int>]
248 7 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\bits\stl_vecto r.h [Note] candidate expects 0 arguments, 9 provided
9 13 с++\Help from forum.cpp [Error] 'accumulate' is not a member of 'std'
10 8 c++\Help from forum.cpp [Error] 'minmax' does not name a type
12 11 c++\Help from forum.cpp [Error] 'minmax' was not declared in this scope
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.01.2016, 20:41
Цитата Сообщение от Salah_Addin Посмотреть сообщение
почему в вашем случае всё работает.
Потому что у меня размер массива известен до его создания.
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:42
Цитата Сообщение от Salah_Addin Посмотреть сообщение
ваш пример у меня не запускается
флаг компиляции --std=c++14
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:59  [ТС]
"флаг компиляции --std=c++14"
Что делать с этой информацией?

Добавлено через 2 минуты
" размер массива известен до его создания."
Это понятно, меняется всего лишь строка инициализации размера массива. А что под капотом? Почему в данном случае иные варианты неприемлемы?

Добавлено через 11 минут
cyber-satyr, я настаиваю на том, что мой вариант рабочий, и хочу знать, почему это не так. Вот программа, которая находит средне арифметическое, сумму элементов. Реализована также, половину я взял из неё, и всё работает.
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
// Middle atithmetic of array elements that are bigger then zero.
#include <iostream>
 
int main()
{
    int n, a[n], i, summ = 0, z;
    float mid;
    printf("Middle atithmetic of array elements that are bigger then zero.\n");
    printf("Input quantity of elements in array: ");
    std::cin>>n;
    printf("Input an array: \n");
    for( i; i<n; i++)
    {
        printf("a[%i] -> ", i);
        std::cin>>a[i];
        if(a[i] != 0) z++;
        summ += a[i];
    }
    mid = summ / n;
    printf("\nEntered array: ");
    for  ( int l = 0; l<n; l++)
        printf("%i ", a[l]);    
    printf("\nSumm of elements is %i.\n", summ);
    printf("\nNumbers that are bigger then 0: %i\n", z);
    printf("Middle atithmetic of array elements: %.3f", mid);
    std::cin.get();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2016, 20:59
Помогаю со студенческими работами здесь

Вычислить среднее арифметическое элементов массива без учета минимального и максимального элементов массива
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива.

Найти среднее арифметическое минимального и максимального элементов массива
найти среднее арифметическое минимального и максимального элементов массива А(n),где 0&lt;=n&lt;=20.

Найти среднее арифметическое максимального и минимального элементов массива
Всем доброго времени суток. Нужна ваша помощь, с C++ только начал знакомится, есть задача. Найти среднее арифметическое максимального и...

Найти среднее арифметическое индексов минимального и максимального элементов массива
Определить среднее арифметическое индексов минимального и максимального элементов массива А, где 0&lt;=n&lt;=20. Визначити середнє...

Вычислите среднее арифметическое элементов последовательности без учета минимального и максимального
Дана последовательность из n целых чисел (n&lt;=200). Вычислите среднее арифметическое элементов последовательности без учета минимального и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru