Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 11
1

Определите среднее арифметическое всех значений элементов массива

20.07.2012, 13:50. Просмотров 1331. Ответов 11
Метки нет (Все метки)

помогите //заранее спасибо


Определите среднее арифметическое всех значений элементов массива
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2012, 13:50
Ответы с готовыми решениями:

Найти сумму всех положительных элементов массива и среднее арифметическое всех элементов
Помогите написать программу: Дан массив A. Найти сумму всех положительных элементов массива и...

Подсчитать количество элементов одномерного массива, которые превосходят среднее арифметическое всех элементов массива
Подсчитать количество элементов одномерного массива, которые превосходят среднее арифметическое...

Среднее арифметическое всех элементов массива
#include <iostream> #include <math.h> using namespace std; void massiv(float **mas,...

Вычислить среднее арифметическое всех элементов массива
Вычислить среднее арифметическое всех элементов массива.

11
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
20.07.2012, 14:14 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
 
void main ()
{
    int a[100], i, s=0, sred, n;
    cout<<"ввести количество элементов массива:"<<endl;
    cin>>n;
    cout<<"ввести элементы массива:"<<endl;
    for (i=0; i<n; i++)
        cin>>a[i];
 
    for (i=0; i<n; i++)
        s+=a[i];
 
    sred=s/n;
 
    cout<<"среднее арифметическое: "<<sred<<endl;
}
0
538 / 443 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
20.07.2012, 14:32 3
grain,
C++
1
double sred;
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
20.07.2012, 15:39 4
grain, Mиxaил, оптимизацию никто не отменял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
 
void main ()
{
    int a[100], i, s=0, sred, n;
    cout<<"ввести количество элементов массива:"<<endl;
    cin>>n;
    cout<<"ввести элементы массива:"<<endl;
    for (i=0; i<n; i++)
    {    
        cin>>a[i];
        s+=a[i];
    } 
    sred=s/n;
 
    cout<<"среднее арифметическое: "<<sred<<endl;
}
Добавлено через 1 минуту
Цитата Сообщение от Айбек Посмотреть сообщение
Определите среднее арифметическое всех значений элементов массива
очень дебильный вопрос
0
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.07.2012, 15:40 5
Fatal Error, трудно, конечно, это оптимизацией назвать (так как, по сути, алгоритм не оптимизирован, да и что там оптимизировать), но будь по вашему. Только среднее правильно вычислите, Mиxaил, правильно намекает. При этом где у вас защита "от дурака". А если n=0.
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
20.07.2012, 15:55 6
Цитата Сообщение от Thinker Посмотреть сообщение
трудно, конечно, это оптимизацией назвать
по процессорному времени это нехилая оптимизация, поверьте мне

Добавлено через 4 минуты
а если предположить что компилятор умный и не будет обращаться к памяти два раза в этом месте
C++
1
2
cin>>a[i];
        s+=a[i];
то это вообще победа!!!
0
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.07.2012, 15:59 7
Цитата Сообщение от Fatal Error Посмотреть сообщение
по процессорному времени это нехилая оптимизация, поверьте мне
если в первом цикле присутствует cin, а во втором - нет и вы все собрали вместе, то из-за низкой скорости cin по сравнению с вычислениями процессора, оптимизации нет никакой Все упирается в то, с какой скоростью вы будете набирать данные, не более того.
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
20.07.2012, 16:15 8
Цитата Сообщение от Thinker Посмотреть сообщение
из-за низкой скорости cin по сравнению с вычислениями процессора, оптимизации нет никакой
ок, попробую растолковать: во втором цикле процессору придется совершать переход на начало цикла для того, чтобы просуммировать все элементы массива, в общем случае по первому коду нужно совершить 2n прыжков, в моем коде только n раз... второй пункт: если вы знакомы с ассемблером, то вы должны знать, что в основном все результаты деятельности функций возвращаются в регистр EAX. в коде grain, два раза обращаться к памяти (для того чтобы положить введенное число в массив и во втором цикле чтобы его взять), я предположил что компилятор умный и он будет прибавлять к сумме не значения из массива,а из регистра, что в разы быстрее. сравните приблизительный машинный код grain и мой!
Assembler
1
2
3
4
5
6
7
8
9
10
11
mov ecx, n
@1:
cin (предположим ввели число, результат в eax)
mov a[index], eax
inc index
loop @1
mov index, 0
mov ecx, n
@2:
mov eax, a[index]
add s, eax
мой код:
Assembler
1
2
3
4
5
6
7
mov ecx, n
@1:
cin (предположим ввели число, результат в eax)
mov mov a[index], eax
add s, eax
inc index
loop @1
если учесть что обращение к памяти - дело долгое, лишние прыжки - дело глупое, то мой код очень оптимален!!!
0
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.07.2012, 16:19 9
Fatal Error, желаю вам удачно поэкспериментировать, тысяч, эдак, десять с запуском программы и ввода с помощью cin массива, состоящего не менее чем из 100 элементов. Отпишитесь за какое минимальное время ваша программа проработала
А еще лучше, тоже самое проделайте с программой из поста 2 и сравните время.
Ну ладно, шутки - шутками, а тема слишком банальна, можно закрывать.
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
20.07.2012, 16:20 10
Thinker, вы говорите не в тему, я не о скорости ввода вам толкую, а о скорости работы программы
0
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.07.2012, 16:23 11
Цитата Сообщение от Fatal Error Посмотреть сообщение
Thinker, вы говорите не в тему, я не о скорости ввода вам толкую, а о скорости работы программы
я вас прекрасно понимаю, просто, обычно, алгоритмы другие оптимизируют, а это слишком простой линейный алгоритм.
0
606 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
20.07.2012, 16:25 12
Thinker, мое ассемблерное прошлое не дает мне спокойно смотреть на не оптимизированный по скорости и памяти код
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2012, 16:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить среднее арифметическое всех элементов массива.
Дан двумерный массив. Определить среднее арифметическое всех элементов массива.

Найти среднее арифметическое всех элементов массива, кроме элементов с номерами от K до L
Дан массив размера N и целые числа K и L (1 &lt; K ≤ L ≤ N). Найти среднее арифметическое всех...

Найти количество элементов превышающих среднее арифметическое всех элементов массива
Дано одномерный массив из 15 целых чисел. Найти количество элементов превышающих среднее...

Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива
Помогите написать код, пожалуйста Ввести c клавиатуры массив из 5 элементов, найти среднее...


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

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

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