Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.04.2018
Сообщений: 22
1

Найти количество элементов массива, равных среднему арифметическому элементов массива

17.04.2018, 15:17. Просмотров 613. Ответов 12
Метки нет (Все метки)

Найти количество элементов массива, равных среднему арифметическому элементов массива.

temp[0] = 10;
temp[1] = 15;
temp[2] = 20;
temp[3] = 10;
temp[4] = 15;
temp[5] = 25;
temp[6] = 15;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2018, 15:17
Ответы с готовыми решениями:

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

Создание массива и поиск равных среднему арифметическому элементов массива
Создать массив (пусть это будет целочисленный массив), состоящий из 100 элементов. Считать...

Найти в файле, число равное среднему арифметическому всех элементов массива
Дан файл действительных чисел a1, ... an (n ввести с клавиатуры), упорядоченных по убыванию. Найти...

Найти и вывести элемент,наиболее близкий к среднему арифметическому всех элементов массива
Дано задание 1)Вывести массив в диапазоне -128..257 2)Найти Min & Max эл-ты 3)Найти и вывести...

12
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
17.04.2018, 15:48 2
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
#include <iostream>
using namespace std;
 
int main() 
{
    int temp[7];
    int avg = 0, sum = 0, count = 0;
    temp[0] = 10;
    temp[1] = 15;
    temp[2] = 20;
    temp[3] = 10;
    temp[4] = 15;
    temp[5] = 25;
    temp[6] = 15; 
    
    for(int i = 0; i < 7; i++)
        sum += temp[i];
    
    avg = sum / 7;
    sum = 0;
    for(int i = 0; i < 7; i++)
        if(temp[i] == avg)  
            sum += temp[i];
    cout << sum << endl;
    system("pause");
    return 0;
}
0
1105 / 553 / 137
Регистрация: 10.02.2018
Сообщений: 2,441
17.04.2018, 16:01 3
Как вариант:
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
#include <iostream>
 
using namespace std;
 
int main()
{
 int temp[] = {10,15,20,10,15,25,15};
 
 int sum = 0; double avg = 0.0;
 int Kol = 0;
 
 for(int i = 0; i < sizeof(temp)/sizeof(temp[0]); i++)
 {
   sum += temp[i];
 }
 
 avg = sum / (sizeof(temp)/sizeof(temp[0]));
 
 for(int i = 0; i < sizeof(temp)/sizeof(temp[0]); i++)
 {
   if(temp[i] == avg) Kol++;
 }
 
  cout << "Kol = " << Kol << endl;
    return 0;
}
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
17.04.2018, 16:06 4
Цитата Сообщение от Серж762 Посмотреть сообщение
Как вариант
Лучше сделать avg целым, потому что исходя данных, avg = 15.7, а в массиве целые числа
0
1740 / 1333 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
17.04.2018, 16:07 5
Цитата Сообщение от avraal Посмотреть сообщение
Лучше сделать avg целочисленным
Вы это сейчас серьёзно?
0
1105 / 553 / 137
Регистрация: 10.02.2018
Сообщений: 2,441
17.04.2018, 16:09 6
P.S. есть интересный нюанс, сум = 110, а среднее 15.71 (приблизительно) то по идее кол-тво совпадений должно быть равно 0 но нет их 3, а вот если взять все данные типа
C++
1
double
то ответ равен 0

Добавлено через 1 минуту
Так думаю будет вернее
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
#include <iostream>
 
using namespace std;
 
int main()
{
 int temp[] = {10.0,15.0,20.0,10.0,15.0,25.0,15.0};
 
 double sum = 0.0; double avg = 0.0;
 int Kol = 0;
 
 for(int i = 0; i < sizeof(temp)/sizeof(temp[0]); i++)
 {
   sum += temp[i];
 }
 
 avg = sum / (sizeof(temp)/sizeof(temp[0]));
 
 for(int i = 0; i < sizeof(temp)/sizeof(temp[0]); i++)
 {
   if(temp[i] == avg) Kol++;
 }
 
  cout << "Kol = " << Kol << endl;
    return 0;
}
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
17.04.2018, 16:14 7
Цитата Сообщение от Hitoku Посмотреть сообщение
Вы это сейчас серьёзно?
В рамках этой задачи, я думаю, так может быть лучше
Чисто ради того, чтобы был какой-то результат
0
5209 / 3541 / 2101
Регистрация: 18.12.2017
Сообщений: 11,255
17.04.2018, 16:19 8
avraal, а что вообще подсчитывает Ваша программа ? 2 раза сумму вместо количества ?

mangyst1, как вариант:

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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, count = 0;
    double sum = 0.0;
    cout <<"Enter n: "; cin >>n;
 
    double*a = new double[n];
 
    cout <<"Enter elements:\n";
    for (int i = 0; i < n; i++)
    {
      cin >>a[i];
      sum +=a[i];
    }
    
    for (int i = 0; i < n; i++)
    {
    if ( a[i] == sum/n ) count++;
      cout <<a[i]<<" ";
    }      
    
    cout <<"\ncount="<< count<<endl;
        
    delete[]a;
system("pause");
return 0;
}
0
9 / 9 / 8
Регистрация: 08.11.2014
Сообщений: 215
Записей в блоге: 1
17.04.2018, 16:22 9
Цитата Сообщение от Yetty Посмотреть сообщение
сумму вместо количества
Да, верно, не досмотрел
Я заметил, что допустил некоторую ошибку, посчитав сумму элементов, а не количество
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
{
avg = sum / 7;
sum = 0;
for(int i = 0; i < 7; i++)
    if(temp[i] == avg)  
        count++;
cout << count << endl;
}


Кликните здесь для просмотра всего текста

А ещё на самом деле, вариант с дробным avg всё же правильнее будет
0
5209 / 3541 / 2101
Регистрация: 18.12.2017
Сообщений: 11,255
17.04.2018, 16:27 10
Цитата Сообщение от avraal Посмотреть сообщение
Я заметил, что допустил некоторую ошибку
у Вас вся программа одна сплошная ошибка. неправильно подсчитывается среднее (т.к. производите целочисленное деление).
0
1740 / 1333 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
17.04.2018, 16:29 11
Yetty, комментарий уже был дан по поводу целого среднего
Цитата Сообщение от avraal Посмотреть сообщение
В рамках этой задачи, я думаю, так может быть лучше
Чисто ради того, чтобы был какой-то результат
Добавлено через 36 секунд
avraal, кстати, 0 тоже какой-то результат, который говорит о многом
0
5209 / 3541 / 2101
Регистрация: 18.12.2017
Сообщений: 11,255
18.04.2018, 00:36 12
Цитата Сообщение от Серж762 Посмотреть сообщение
есть интересный нюанс, сум = 110, а среднее 15.71 (приблизительно) то по идее кол-тво совпадений должно быть равно 0 но нет их 3
Серж762, это из-за целочисленного деления. Вы делите avg = sum / (sizeof(temp)/sizeof(temp[0])) - целое на целое и получаете 15. В массиве 3 таких значения. Исправить можно так: avg = double (sum) / 7 или сразу объявить sum как double.
0
274 / 258 / 110
Регистрация: 23.01.2018
Сообщений: 859
18.04.2018, 07:45 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> v;
    copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(v));
    cout << count(cbegin(v), cend(v), accumulate(cbegin(v), cend(v), 0) / v.size()) << endl;
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2018, 07:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сформировать из массива A массив B: элемент B(K) равен среднему арифметическому элементов массива A с номерами от K до N
Как перевести из &quot;С&quot; в С++? Дан массив A размера N. Сформировать новый массив B того же...

Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива...)
Помогите пожалуйста разработать программу и реализовать интуитивный понятный интерфейс (используя...

Найти количество элементов в этих массива равных первому элементу массива S
Даны целочисленные массивы S и T с разным количеством элементов. Найти количество элементов в этих...

Получить массив B, очередной элемент которого равен среднему арифметическому тройки элементов массива A
Задача простая :) (На языке Си/Си++) Из массива а0, а1, ... , а(3n-1) получить массив b0, b1,...


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

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

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