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

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

Войти
Регистрация
Восстановить пароль
 
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
#1

Среднее элементов массива - C++

28.11.2012, 20:24. Просмотров 357. Ответов 10
Метки нет (Все метки)

Смысл задачи таков: дан массив. вывести новый массив без повторяющихся элементов и посчитать среднее. Данный код выводит только массив а среднее не могу найти.
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
#include <stdio.h>
#include <conio.h>
 
int main ()
{
    int p[50];
    int i, n, j;
    int count=1;      // счётчик не повторяющихся символов
    float   res;
 
    printf("\nEnten number of elements: ");
    scanf("%u",&n);
    printf("\nEnter elements: ");
    for (i=0; i<n; i++)
        scanf("%u",&p[i]);
 
    int temp=p[0];  // певый символ исходного массива будет маркером
    for (i=1; i<n; i++)  // перебор всего массива без первого
    {
        if(p[i]!=temp)     // если символ не равен маркеру
        {
            for (j=i+1; j<n; j++)  // перебор от следующего за рассмотр. символом
                if(p[i]==p[j])     // если символы совпали
                    p[j]=temp;       // маркируем повторяющиеся
            count++;            // увеличиваем счётчик
        }
    }
    printf("\n Test: ");
    for (i=0; i<n; i++) 
    {
        printf(" %i", p[i]);
        // должны получить следующее
        // был массив: 1 2 3 4 5 5 5 3 3 ПРИМЕР!!!
        // стал      : 1 2 3 4 5 1 1 1 1 
    }
 
 
    printf("\n");
    count=0;
    // теперь удаляем все маркированные элементы
    for (i=1; i<n; i++) 
    {
        if (p[i]!=p[0])     p[++count]=p[i];
    }
 
 
    printf("\n");
  // итого
    for (i=0; i<=count; i++) 
    {
        printf(" %i", p[i]);
    }
    getch();
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 20:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Среднее элементов массива (C++):

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

Определить сумму указанных элементов, количество нечетных элементов и среднее арифметическое четных элементов массива - C++
Дан двумерный массив целых чисел. Определить: 1. Сумму элементов массива, больших 30 2. Количество нечетных элементов массива 3....

Подсчитать число элементов массива A[n], превосходящих среднее геометрическое этого массива - C++
Подскажите пожалуйста, как подсчитать число элементов массива A, превосходящих среднее геометрическое этого массива.

Найти среднее арифметическое элементов массива, сравнить два массива поэлементно - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; void main() { float x, y, SA; int K, KOL,...

Сформировать массив X из элементов массива A, значения которых не превышают среднее арифметическое массива A - C++
Помогите с выводом массива X пожалуйста никак не получается по нормальному(( и если можно осуществить сдвиг вправо на две позиции. ...

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

10
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
28.11.2012, 20:41 #2
Цитата Сообщение от Suger Посмотреть сообщение
посчитать среднее
арифметическое?
0
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
28.11.2012, 20:43  [ТС] #3
Цитата Сообщение от SeregaC++ Посмотреть сообщение
арифметическое?
совершенно верно
0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
28.11.2012, 20:47 #4
добавьте в цикл
C++
1
sum += p[i];
где sum это int sum = 0;

а уже после цикла.
что-то типа такого:

C++
1
cout << "Res: " << (double)sum / i;
0
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
28.11.2012, 20:51  [ТС] #5
не помогло
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
Завершенные тесты: 1
28.11.2012, 21:02 #6
C
1
2
3
4
5
6
7
    int summa = 0;
    for (i=0; i<=count; i++) 
    {
        printf(" %i", p[i]);
        summa += p[i];
    }
    printf("\n Average: %i", (summa / n));
Ваш последний цикл
0
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
28.11.2012, 21:07  [ТС] #7
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
C
1
2
3
4
5
6
7
    int summa = 0;
    for (i=0; i<=count; i++) 
    {
        printf(" %i", p[i]);
        summa += p[i];
    }
    printf("\n Average: %i", (summa / n));
Ваш последний цикл
немного неправильно: когда мы делим сумму на число n, то надо исключить повторные числа. Т.е. ввожу 12321
выводит 123, а среднее Sum/(n-2). Именно этот момент я и не смог реализовать(
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
Завершенные тесты: 1
28.11.2012, 21:10 #8
Suger, вообще, последний цикл выводит массив без повторяющихся элементов. там и считается сумма.
там только не summa / n, а summa / count. ошибся
0
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
28.11.2012, 21:15  [ТС] #9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Suger, вообще, последний цикл выводит массив без повторяющихся элементов. там и считается сумма.
там только не summa / n, а summa / count. ошибся
Спасибо) Я это знаю. Просто в общем картину описал. сейчас проверю)

Добавлено через 4 минуты
что решает не верно. все тот же пример 12321. 1+2+3=6/3=2 но выдает 3.
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
Завершенные тесты: 1
28.11.2012, 21:33 #10
ошибся...
0
Suger
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 37
28.11.2012, 22:13  [ТС] #11
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
тут сделайте либо i = 1; i <= count;... либо i = 0; i < count;
C++
1
int count=1;
это верно?

Добавлено через 29 минут
ну как есть соображения по поводу этой проблемы?

Добавлено через 7 минут
а можно ли решить эту задачу еще как нибудь? Я думал сравнить все элементы массива и которые не повторяются занести в другой массив и там уже найти среднее... Но меня снова подкачала реализация кода. не могу задать условие так чтобы массив заносился в другой(и просто занести в другой массив не умею в с++)
0
28.11.2012, 22:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2012, 22:13
Привет! Вот еще темы с ответами:

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

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

Найти среднее арифметическое остатков от деления на 11 элементов целочисленного массива из 30 элементов - C++
#include &quot;stdio.h&quot; void main() { const int N=30; int A,i,sum; float sred,ost; for(i = 0; i &lt; N; i++) scanf(&quot;%d&quot;,&amp;A); ...

Среднее арифметическое положительных элементов массива, произведение и количество отрицательных элементов - C++
в массиве X найти среднее арифметическое положительных элементов массива, произведение и кол-во отрицательных элементов массива.


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

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

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