Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Saym
 Аватар для Saym
4 / 4 / 3
Регистрация: 02.11.2014
Сообщений: 169
19.11.2014, 16:35     Удалить элементы массива, которые больше среднего арифетического #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
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();
   }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 16:35     Удалить элементы массива, которые больше среднего арифетического
Посмотрите здесь:

Уничтожить все элементы больше среднего арифметического элементов массива C++
C++ Удалить из массива все элементы, которые меньше среднеарифметического значения всех элементов исходного массива
В массиве целых чисел из 20 элементов найти все элементы, значение которых больше среднего арифметического массива C++
C++ Вывести все элементы массива, которые больше введенного числа
C++ дописать ( Из массива А удалить все элементы, которые встречаются в В ровно 2 раза. Из В переписать в С те элементы, которые совпадают с оставшимися)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
19.11.2014, 16:44     Удалить элементы массива, которые больше среднего арифетического #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
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();
}
Saym
 Аватар для Saym
4 / 4 / 3
Регистрация: 02.11.2014
Сообщений: 169
19.11.2014, 16:54  [ТС]     Удалить элементы массива, которые больше среднего арифетического #3
Спасибо! Работает.
А что происходит здесь:
C++
1
b[j++]=a[i];
?
Получается, в массив b элементы вставляются не с нулевого индекса, а с первого?
Или я что-то не так понимаю?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
19.11.2014, 16:56     Удалить элементы массива, которые больше среднего арифетического #4
Это постинкремент. Сперва возвращается значение j затем оно увеличивается на единицу.
Saym
 Аватар для Saym
4 / 4 / 3
Регистрация: 02.11.2014
Сообщений: 169
19.11.2014, 16:59  [ТС]     Удалить элементы массива, которые больше среднего арифетического #5
Хорошо. Спасибо!
Yandex
Объявления
19.11.2014, 16:59     Удалить элементы массива, которые больше среднего арифетического
Ответ Создать тему
Опции темы

Текущее время: 03:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru