0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 9
1

Цикл: Найти среднее арифметическое всех чисел а1,…,an, кроме ai.

03.04.2016, 16:52. Показов 5350. Ответов 7
Метки нет (Все метки)

Даны натуральные числа i, n, действительные числа а1,…, an . Найти среднее арифметическое всех чисел а1,…,an, кроме ai.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main() 
{ 
  int i,n;
  cout<<"Vash massiv ";
  cin>>n;
  int a[n];
  for (i=0; i<=n; i++)
  while 
  {
    for (i=0; i<=n; i++)
        sum+=a[n];
  }
}
Я немного не понимаю, что нужно прописать в выражении while.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2016, 16:52
Ответы с готовыми решениями:

Найти среднее арифметическое всех чисел a1,..., an, кроме ai
Даны целые числа i, n, вещественные числа a1,..., an (i&lt;n). Найти среднее арифметическое всех чисел...

Найти среднее арифметическое всех целых чисел в заданном диапазоне (цикл for)
Ребятки, помогите пожалуйста решить эти задачи, как можно проще, через цикл for и через...

Найти среднее арифметическое всех чисел а1,....,аn,кроме a
Ребят,задача в паскале,не могу решить,помогите пожалуйста!Даны натуральные числа i,n,действительные...

Найти среднее арифметическое всех чисел а1,...,аn, кроме ai
помогите. задача абрамов 162 Даны натуральные числа i,n,действительные числа a1,...,an(i&lt;=n).Найти...

7
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
03.04.2016, 17:37 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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main() 
{ 
    int i,n;
    cout << "Vash massiv ";
    cin >> n;
    cout << "i = ";
    cin >> i;
    int a[n];
    for (int k=0; k < n; k++) a[k] = k;
    int sum = 0;
    int k = 0;
    while (true)
    {
        if ( k != i) sum+=a[k];
        k++;
        if (k == n) break;
    }
    cout << (float)sum/(n-1) << endl;
}
Добавлено через 4 минуты
скорее всего предполагалось, что вы сами заполните массив, но я это сделал за вас в 14 строке
теперь массив состоит из n элементов и значение в каждой ячейке равно индексу ячейки

в цикле while (кстати можно было написать while(k != n), и отпала бы еобходимость в 21 строчке) суммируются (19 строка) все элементы массива кроме i

Добавлено через 4 минуты
в 23 строке выводим среднеарифметическое

Добавлено через 1 минуту
да, и еще, программе не нужна 2-я строчка
1
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 9
03.04.2016, 18:39  [ТС] 3
C++
1
2
int sum = 0;
    int k = 0;
Зачем это?

И почему здесь
C++
1
cout << (float)sum/(n-1) << endl;
(n-1) когда нам нужно (n-i)?
0
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
04.04.2016, 07:16 4
centurion1334, int sum - здесь будет храниться сумма значений во всех ячейках массива
k - счетчик для цикла while, аналог i в for(int i=0; ...)
нужно именно (n-1) так как n -кол-во всех элементов массива а сумму мы считали для n-1 элементов (выбросили a[i])
(float)sum -для того чтобы преобразовать целочисленное значение sum в тип с плавающей точкой, чтобы после деления на (n-1) мантисса не отбрасывалась
в C++ если вы будете делить два целочисленных значения, то и результат получите целочисленный
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 9
05.04.2016, 18:27  [ТС] 5
Я немного переписал код, и дал пользователю возможность вводить элементы массива самому, но у меня из-за этого крашится компилятор.
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main() 
{ 
    int i,n,k;
    cout << "Vvedite dlinu massiva ";
    cin >> n;
    cout << "i = ";
    cin >> i;
    int a[n];
    for (int k=0; k < n; k++)
    {
        cout<<"Vvedite chisla: ";
        cin>>a[k];
    }
    int sum = 0;
    while (true)
    {
        if ( k != i) sum+=a[k];
        k++;
        if (k == n) break;
    }
    cout << (float)sum/(n-1) << endl;
    return 0;
}
В чем проблема?
0
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
05.04.2016, 18:40 6
после 19 строки напишите k = 0;
1
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 9
05.04.2016, 19:35  [ТС] 7
надо же, заработало, а всего 1 строчка.
Спасибо.
0
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
05.04.2016, 19:57 8
centurion1334,
если не инициализировать переменную каким либо значением перед использованием, то она получает значение которое было записано в участке памяти перед ее определением. происходит это из-за того что эту память раньше использовали другие приложения, и после окончания своей миссии плохо почистили за собой (почистить хорошо в общем-то не реально)
таким образом, переменная - это символическое название конкретного участка памяти.
в вашей программе k, которая определена в 8 строке, и k, которая определена в 14 строке, это две разные переменные.
k из 8 строки используется в цикле while
а время жизни k из 14 строки ограничено блоком цикла for, дальше она не существует
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2016, 19:57
Помогаю со студенческими работами здесь

Найти среднее арифметическое всех чисел, кроме заданного
Даны натуральные числа i, n (i &lt;= n), вещественные числа a1, a2, …,an. Найти среднее...

Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while.
Напишите пожалуйста код для данной задачки с помощью цикла while Вывести числа в пользовательском...

Массивы: найти среднее арифметическое всех элементов, кроме i-го
Даны натуральные числа i,n, действительные числа a1,...an(i&lt;=n).Найти среднее арифметическое всех...

Используя одномерный массив на 20 целых чисел, посчитать среднее арифметическое всех элементов кроме 11 и 12
Используя одномерный массив на 20 целых чисел посчитать среднее арифметическое всех элементов кроме...


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

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

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