5 / 5 / 4
Регистрация: 02.11.2014
Сообщений: 196
1

Удалить элементы массива, которые больше среднего арифетического

19.11.2014, 16:35. Показов 3874. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно удалить элементы массива, которые больше среднего арифметического. Поискал на форуме - понял, что элементы из массива удалить нельзя. Массив статический. Всякие операторы, которые делают это автоматически, использовать нельзя. Решил создать новый массив из элементов, которые меньше среднего арифметического. Но в результате не выдается итоговый(новый)массив. В чем ошибка? И вообще, правильно ли я делаю?

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
#pragma argsused
#include <iostream.h.>
#include <math.h.>
#include <conio.h.>
#include <stdlib.h.>
 
int a[100],b[100],n,j,i,sum,m;
float average;
 
int main()
{
cin>>n;//Ввод количества элементов массива
sum=0; j=0; m=0;//Будущие счетчики и сумма
 
for (i=0;i<n;i++) {
a[i]=rand()%100-50;
cout<<a[i]<<" ";
}                                 //Сформировал рандомный массивчик и вывел его на экран
 
cout<<endl; 
 
 
 
for (i=0;i<n;i++) {
sum=sum+a[i]; //Сумма элементов
}
average=sum/n; //Сумму делим на кол-во элементов
 
cout<<average<<" "; //Вывод среднего арифметического на экран
cout<<endl;
 
 
 
for (i=0;i<n;i++) {
while (a[i]<average) {
m=m+1;} //Тут я подсчитал кол-во годных элементов
}
 
 
for (i=0;i<n;i++){
if (a[i]<average){
for (j=0;j<m;j++) {
b[j]=a[i]; }
}
}             //Вот тут я, похоже, делаю что-то не то. Пытался заполнить новый массив нужными элементами
 
 
 
 
 
 
for (j=0;j<m;j++)  {
cout<<b[i]<<" "; //Вывод нового массива. Но он не выводится. Почему-то.
}
 
 
 
getch();
   }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2014, 16:35
Ответы с готовыми решениями:

Вывести на экран элементы массива, которые больше среднего арифметического всех его элементов
Ребят помогите пожалуйста решить два массива, а то мне трудно они даються=) 1)Дан массив А из N...

Удалить те элементы исходного массива, которые больше заданного k
Задан массив целых чисел и целое число k . Удалить те элементы исходного массива , которые больше k.

В двумирному массиве заменить на ноль те элементы, которые имеют нечетное сумму индексов и больше среднего арифметического значений элементов массива
Дан одномерный массив А и двумирний В . В двумирному массиве заменить на ноль те элементы,...

Удалить из массива те элементы, которые больше среднего арифметического
Дан массив целых чисел D1,...,D30. Удалить из него те элементы, которые больше среднего...

4
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,500
Записей в блоге: 6
19.11.2014, 16:44 2
Лучший ответ Сообщение было отмечено Saym как решение

Решение

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
#include <iostream>
#include <cmath>
#include <conio.h>
#include <cstdlib>
using namespace std;
int a[100],b[100],n,j,i,sum,m;
float average;
int main() {
    cin>>n;//Ввод количества элементов массива
    sum=0; j=0; m=0;//Будущие счетчики и сумма
 
    for (i=0;i<n;i++) {
        a[i]=rand()%100-50;
        cout<<a[i]<<" ";
    }                                 //Сформировал рандомный массивчик и вывел его на экран
    cout<<endl;
 
    for (i=0;i<n;i++) {
        sum=sum+a[i]; //Сумма элементов
    }
    average=sum/n; //Сумму делим на кол-во элементов
 
    cout<<average<<" "; //Вывод среднего арифметического на экран
    cout<<endl;
 
    for (i=0;i<n;i++){
        if (a[i]<average){
            b[j++]=a[i];
        }
    }             //Вот тут я, похоже, делаю что-то не то. Пытался заполнить новый массив нужными элементами
 
    for (i=0;i<j;i++)  {
        cout<<b[i]<<" "; //Вывод нового массива. Но он не выводится. Почему-то.
    }
 
    getch();
}
1
5 / 5 / 4
Регистрация: 02.11.2014
Сообщений: 196
19.11.2014, 16:54  [ТС] 3
Спасибо! Работает.
А что происходит здесь:
C++
1
b[j++]=a[i];
?
Получается, в массив b элементы вставляются не с нулевого индекса, а с первого?
Или я что-то не так понимаю?
0
Эксперт по математике/физикеЭксперт С++
2044 / 1363 / 393
Регистрация: 16.05.2013
Сообщений: 3,500
Записей в блоге: 6
19.11.2014, 16:56 4
Это постинкремент. Сперва возвращается значение j затем оно увеличивается на единицу.
1
5 / 5 / 4
Регистрация: 02.11.2014
Сообщений: 196
19.11.2014, 16:59  [ТС] 5
Хорошо. Спасибо!
0
19.11.2014, 16:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2014, 16:59
Помогаю со студенческими работами здесь

Удалить элементы массива, которые имеют значение больше среднего арифметического
помогите пожалуйста решить последнюю часть задачи. в общем нужно удалить элементы массива, которые...

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

Элементы одномерного массива, которые больше среднего значения массива, заменить на 0
Элементы одномерного массива размером 7, которые больше среднего значения массива, заменит на 0....

Из массива удалить четные элементы, имеющие значение больше среднего арифметического всех элементов массива.
Из массива удалить четные элементы, имеющие значение больше среднего арифметического всех элементов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru