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

Среднее арифметическое отрицательных элементов - C++

Восстановить пароль Регистрация
 
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
11.04.2014, 20:22     Среднее арифметическое отрицательных элементов #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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int min_id,m,i,n,k;
    float sum=0;
    cout << "Vvedite n: ";
    cin >> n;
    float arr [n];
    for (i=0; i<n; i++)
        {
        cout << "Vvedite elenent nomer " << i+1 << " : "; // Ввод элементов массива
        cin >> arr[i];
        }
    for (i=0;i<n;i++)
    {
        if (arr[n]<0)
        k++;
        sum=sum+arr[i];
        if ((arr[i])<(arr[min_id]))
        min_id = i;
        m=sum/k;
        arr[min_id] = floor(m);}
        cout<< "kolichestvo"<<k<<endl;
        cout<< "Znachenia"<<m<<endl;
        for (i=0;i<n;i++)
            cout <<arr[i]<< " "<< endl;
    return 0;
}
Но когда я запускаю программу, после ввода элементов массива, программа вылетает. В чём проблема - ума не приложу. Помогите, пожалуйста.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 20:22     Среднее арифметическое отрицательных элементов
Посмотрите здесь:

одномерный массив (Найти среднее арифметическое отрицательных элементов) C++
C++ Запись в файл, среднее арифметическое отрицательных элементов
Напишите функцию, рассчитывающую среднее арифметическое отрицательных элементов C++
C++ Среднее арифметическое положительных элементов массива, произведение и кол-во отрицательных элементов
Вычислить среднее арифметическое всех отрицательных элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
11.04.2014, 20:29     Среднее арифметическое отрицательных элементов #2
Милаше, одну ошибку вижу, у вас пропущены скобки, поэтому при условии,что число меньше нуля, выполняется только k++;
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
11.04.2014, 20:30     Среднее арифметическое отрицательных элементов #3
вы пытаетесь создать динамический массив как статический, правильное создание
C++
1
float *arr=new float [n];
кроме того переменная m должна быть либо типа float либо double, т.к. функция floor работает только с дробными типами данных(с int не работает)

и ещё коечто у вас не там стоит скобка закрывающая цикл, она должна стоять после 2-го условия, до деления суммы на количество слагаемых (вы делите на каждой итерации и в результате будет неверный ответ)

также вы должны изначально задать значение переменной min_id=0, иначе будет сравнивать с несуществующим элементом массива
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
11.04.2014, 20:40  [ТС]     Среднее арифметическое отрицательных элементов #4
А можно здесь как-нибудь обойтись без динамического массива?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.04.2014, 22:04     Среднее арифметическое отрицательных элементов #5
Цитата Сообщение от Милаше Посмотреть сообщение
А можно здесь как-нибудь обойтись без динамического массива?
Можно. Если задаться неким максимальным размером, больше которого пользователь вводить не должен.
Ну или, если хочет использовать форму
C++
1
int array[n];
для n - известного только при выполнении программы, нужно чтобы компилятор поддерживал VLA. gcc например умеет.
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
11.04.2014, 23:27  [ТС]     Среднее арифметическое отрицательных элементов #6
Я исправил все ошибки, которые были обозначены выше. Но программа почему-то неправильно вычисляет среднее арифметическое отрицательных чисел. Никто не видит ошибки?

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>
using namespace std;
 
int main()
{
    int min_id=0,i,n,k;
    float m,sum=0;
    cout << "Vvedite n: ";
    cin >> n;
    float arr [n];
    for (i=0; i<n; i++)
        {
        cout << "Vvedite elenent nomer " << i+1 << " : "; // Ввод элементов массива
        cin >> arr[i];
        }
    for (i=0;i<n;i++)
        {
        if (arr[i]<0)
        {
        k++;
        sum=sum+arr[i];
        }
 
        if ((arr[i])<(arr[min_id]))
        min_id = i;
        }
        m=(sum/k);
        if (arr[min_id]<0)
        arr[min_id] = floor(m);
        else
        arr[min_id] = ceil(m);
        cout<< "Srednee arifmeticheskoe"<<m<<endl;
        for (i=0;i<n;i++)
            cout <<arr[i]<< " "<< endl;
    return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.04.2014, 23:36     Среднее арифметическое отрицательных элементов #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
k - не инициализировано.
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
11.04.2014, 23:39  [ТС]     Среднее арифметическое отрицательных элементов #8
Так я же его подсчитываю в программе
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.04.2014, 23:39     Среднее арифметическое отрицательных элементов #9
Цитата Сообщение от Милаше Посмотреть сообщение
Так я же его подсчитываю в программе
Начальное значение какое?
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
11.04.2014, 23:41  [ТС]     Среднее арифметическое отрицательных элементов #10
Т.е. мне можно записать

C++
1
int min_id=0,i,n,k=0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 23:53     Среднее арифметическое отрицательных элементов
Еще ссылки по теме:

C++ Массивы. Найти среднее арифметическое отрицательных элементов
C++ Найти количество и среднее арифметическое отрицательных элементов массива
Вычислить среднее арифметическое отрицательных элементов динамических массивов A и B C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.04.2014, 23:53     Среднее арифметическое отрицательных элементов #11
Милаше, возьмите за правило инициализировать переменную при ее определении.
Yandex
Объявления
11.04.2014, 23:53     Среднее арифметическое отрицательных элементов
Ответ Создать тему
Опции темы

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