Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
#1

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

09.01.2016, 19:23. Просмотров 872. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2016, 19:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти среднее арифметическое элементов массива без учёта максимального и минимального элементов (C++):

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

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

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

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

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

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

30
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
09.01.2016, 19:36 #2
уверен что это вообще скомпилится?

int n, a[n], min, max, summ, z;
0
marat_miaki
148 / 137 / 50
Регистрация: 08.04.2013
Сообщений: 549
09.01.2016, 19:36 #3
Не работает потому что нет первоначальных значении min=max=a[0];
0
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 19:39 #4
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
4035 / 3874 / 1952
Регистрация: 20.04.2015
Сообщений: 7,037
09.01.2016, 19:41 #5
Также нет начальных значений summ и z.
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 19:58  [ТС] #6
С закомментированным мин. наличие или отсутствие инициализации int n, a[n], min, max, summ, z не играет никакой роли - программа запускается, считает что-то.
0
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:00 #7
Цитата Сообщение от Salah_Addin Посмотреть сообщение
инициализации int n, a[n], min, max, summ, z не играет никакой роли
каков размер *массива* a[n]?
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:02  [ТС] #8
Если проверять каждую функцию отдельно, например, сумму, а остальное в комментарий, то работает и правильно считает. Всё вместе - нет.

Добавлено через 1 минуту
Размер массива задаётся пользователем. Но я более 5 пока не использую.
0
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:03 #9
Цитата Сообщение от Salah_Addin Посмотреть сообщение
Размер массива задаётся пользователем.
Так ты уже объявил массивл a[n], а n еще не инициализировал.
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:13  [ТС] #10
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
4035 / 3874 / 1952
Регистрация: 20.04.2015
Сообщений: 7,037
09.01.2016, 20:14 #11
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
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:15 #12
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
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:16  [ТС] #13
"Так ты уже объявил массивл 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
cyber-satyr
393 / 164 / 28
Регистрация: 10.12.2015
Сообщений: 717
09.01.2016, 20:20 #14

Не по теме:

рукалицо



Добавлено через 41 секунду
в чем разница между словами "инициализация" и "декларация"?
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:25  [ТС] #15
Даценд, можно подробнее, почему в вашем случае всё работает. Заменяю
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
09.01.2016, 20:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2016, 20:25
Привет! Вот еще темы с ответами:

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

Высчитать среднее арифметическое элементов масива без учета минимального и максимального элемента - C++
Помогите решить задачи( Вторая задача: Написать программу которая считает среднее арифметическое элементов масива без учета...

Найти среднее арифметическое, и разность минимального и максимального элементов последовательности - C++
Дана последовательность целых чисел, за которой следует 0. Найти среднее арифметическое этой последовательности. Дана...

Составит пограмму, которая вычисляет среднее арифметическое максимального и минимального значения элементов одномерного массива Х - C++
Составит пограмму, которая вычисляет среднее арифметическое максимального и минимального значения элементов одномерного массива Х, который...


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

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

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