Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.01.2016
Сообщений: 1
1

Найти среднее арифметическое значение массива

19.01.2016, 21:39. Показов 2556. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести массив А(N). Найти среднее арифметическое значение массива. Минимальный элемент массива заменить на среднее арифметическое. Вывести преобразованный массив.

Может ли кто написать код?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2016, 21:39
Ответы с готовыми решениями:

Найти среднее арифметическое значение элементов массива
#include <iostream> using namespace std; int shet(int *m, int n) { int x,sum=0;...

Найти среднее арифметическое значение четных элементов массива
Не все тесты проходит, где ошибка? Дан линейный массив на N элементов. Выполнить циклический...

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

Найти среднее арифметическое значение положительных элементов массива
Задан массив A(n),найти среднее арифметическое значение положительных элементов массива.

6
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
19.01.2016, 21:45 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

MiracleK,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
    int n, sum = 0, min = 0;
    cin >> n;
    int* a = new int[n];
    for( int i = 0; i < n; i++ ) {
        cin >> a[i];
        if( a[min] > a[i] ) min = i;
        sum += a[i];
    }
    a[min] = sum/n;
    for( int i = 0; i < n; i++ ) cout << a[i] << " ";
    cout << endl;
    cin.get();
    return 0;
}
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
19.01.2016, 21:47 3
Могу предложить такое наполнение для программы:
C++
1
2
3
4
5
6
7
8
const int n=5;
double a[n],avg=0; int i,min=0;
for(i=0;i<n;i++){
 cin>>a[i]; avg+=a[i]; min=(a[i]<a[min])?i:min;
}
a[min]=avg/n; 
for(i=0;i<n;i++) cout<<a[i]<<'\t';
cin.get();
0
24 / 24 / 7
Регистрация: 25.04.2013
Сообщений: 195
20.01.2016, 00:07 4
вот из-за таких просьб у НАС сдают зачеты и получаются криворукие программисты менеджеры, которые даже и не учатся. печально печально. вы еще спросите он проходили выделения памяти для массива в условии этого не было!

Добавлено через 5 минут
хотя если такой код показать преподу надо ему объяснять почему это сделано так. и а не иначе.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.01.2016, 09:08 5
Hikari, окажите любезность, прочитайте, пожалуйста:

Кликните здесь для просмотра всего текста

Стив Макконнелл "Совершенный код" (31 глава, стр. 742)

Размещение одного оператора на строке

Современные языки, такие как C++ и Java, позволяют располагать несколько операторов на одной строке. Однако когда дело касается этого вопроса, мощь свободного форматирования оборачивается палкой о двух концах. Следующая строка содержит несколько выражений, которые, с точки зрения логики, вполне могут располагаться в отдельных строках:
C++
1
i = 0; j = 0; k = 0; DestroyBadLoopNames( i, j, k );
Аргументом в защиту размещения нескольких выражений на одной строке может служить факт, что в этом случае требуется меньшее число строк экранного пространства или бумаги для распечатки, что позволяет одновременно видеть больший объем кода. Это также позволяет сгруппировать взаимосвязанные выражения, а некоторые программисты даже полагают, что так они подсказывают компилятору, как можно оптимизировать код.
Все так, но основания для самоограничения, требующие оставлять не более одного оператора в строке, гораздо серьезней.
  • Размещение каждого оператора на отдельной строке дает точное представление о сложности программы. При этом не скрывается сложность из-за того, что сложные операторы выглядят тривиальными. Сложные операторы и выглядят сложными, простые — простыми.
  • Размещение нескольких операторов на одной строке не помогает современным компиляторам в оптимизации. Сегодняшние оптимизирующие компиляторы не нуждаются в подсказках, сделанных с помощью форматирования (см. ниже).
  • Если операторы расположены на отдельных строках, чтение кода происходит сверху вниз, а не сверху вниз и слева направо. При поиске определенной строки у взгляда должна быть возможность придерживаться левого края кода. Он не должен просматривать каждую строку целиком только потому, что в одной строке может быть два оператора.
  • При размещении операторов на отдельных строках легко найти синтаксические ошибки, если компилятор сообщает только номера строк, где они произошли. При расположении нескольких операторов на одной строке ее номер ничего не скажет о том, какой оператор содержит ошибку.
  • При размещении операторов на отдельных строках легко выполнять пошаговую отладку кода, используя построчные отладчики. Если строка содержит несколько операторов, отладчик выполнит их все одновременно, и вам придется переключиться на ассемблерный листинг для выполнения пошаговой отладки отдельных выражений.
  • Когда строка содержит только один оператор, его легко редактировать — можно удалить или временно закомментировать всю строку. Если же на одной строке вы разместили несколько операторов, вам придется выполнять редактирование между остальными операторами.
В C++ избегайте выполнения нескольких операций в одной строке (побочные эффекты)
Побочные эффекты — это последствия выполнения некоторого выражения, проявляющиеся в дополнение к основным результатам выполнения этого выражения. Так, в C++ оператор ++, расположенный на одной строке с другими операторами, приводит к проявлению побочного эффекта. Присваивание значения переменной и применение левой части этого присваивания в условном операторе также является примером побочного эффекта.
Побочные эффекты снижают читаемость кода. Например, если n равно 4, что напечатает выражение, приведенное в листинге 31-48?

Листинг 31-48. Пример непредсказуемого побочного эффекта (C++)
C++
1
PrintMessage( ++n, n + 2 );
4 и 6? Или 5 и 7? А может, 5 и 6? Правильный ответ: «Ни то, ни другое и не третье». Первый аргумент —++n — равен 5. Но язык C++ не определяет порядок вычисления условий выражения или аргументов функции. Поэтому компилятор может вычислить второй аргумент, n + 2, либо до, либо после первого аргумента, и результат может быть равен 6 или 7 в зависимости от компилятора. В листинге 31-49 показано, как переписать это выражение, чтобы прояснить свои намерения:

Листинг 31-49. Пример избавления от непредсказуемого побочного эффекта (C++)
C++
1
2
++n;
PrintMessage( n, n + 2 );
Если вы все еще не совсем уверены в том, что побочные эффекты надо выносить в отдельные строки, попробуйте понять, что делает функция, приводимая в листинге 31-50:

Листинг 31-50. Пример слишком большого количества операции в строке (C)
C
1
2
3
4
strcpy( char * t, char * s ) {
    while ( *++t = *++s )
;
}
Некоторые опытные программисты не видят сложности в этом примере, потому что эта функция им знакома. Они смотрят на нее и говорят: «Это функция strcpy()». Однако в нашем случае это не совсем strcpy(). Она содержит ошибку. Если вы сказали «Это strcpy()», увидев данный код, вы узнали код, а не прочитали его. В такую же ситуацию вы попадаете при отладке программы: код, на который вы не обратили внимания, потому что «узнали», а не прочли его, может содержать ошибку, поиск которой займет гораздо больше времени, чем она этого заслуживает.
Фрагмент, показанный в листинге 31-51, функционально идентичен первому варианту и гораздо удобней для чтения:

Листинг 31-51. Пример читаемого количества операций в каждой строке (C)
C
1
2
3
4
5
6
7
8
strcpy( char * t, char * s ) {
    do {
        ++t;
        ++s;
        *t = *s;
    }
    while ( *t != ‘\0);
}
В этом переформатированном коде ошибка очевидна. Конечно, t и s инкрементируются до того, как *s будет скопирована в *t. Первый символ пропускается.
Второй пример выглядит продуманней первого, хотя операции, выполняемые во втором примере, идентичны первому. Причина такого впечатления в том, что во втором варианте не скрывается сложность выполняемых действий.
Рост производительности также не оправдывает размещения нескольких операций на одной строке. Поскольку обе функции strcpy() логически эквивалентны, можно ожидать, что компилятор сгенерирует для них идентичный код. Однако при профилировании обеих функций выяснилось, что для копирования 5 000 000 строк первой функции понадобилось 4,81 секунды, а второй —4,35.
В нашем случае «умная» версия показала снижение скорости на 11%, что делает ее гораздо менее умной. Результаты могут изменяться от компилятора к компилятору, но в целом они свидетельствуют о том, что пока вы не измерили прирост производительности, следует сначала стремиться к ясности и корректности, а уж затем — к производительности.
Даже если вы легко читаете выражения с побочными эффектами, пожалейте тех, кому придется разбираться с вашим кодом. Большинству программистов нужно дважды подумать, чтобы понять выражения с побочными эффектами. Позвольте им использовать мозговые клетки для осмысления более общих вопросов работы вашего кода, а не синтаксических деталей конкретного выражения.
0
Hikari
20.01.2016, 09:29
  #6

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
окажите любезность, прочитайте, пожалуйста
Если стиль кодирования не карается правилами форума, я останусь на своих принципах. Все таки за 15 лет свой стиль у меня выработался жестко, и отходить от него я не собираюсь.

0
sourcerer
20.01.2016, 12:05     Найти среднее арифметическое значение массива
  #7

Не по теме:

Hikari, позвольте поинтересоваться. Вы прочитали и Вас не убедили доводы? Или Вам хватило заголовка и Вы не стали читать?

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2016, 12:05

Найти среднее арифметическое значение положительных и отрицательных элементов массива
Задание 2 (его или третье) Дан Массив Xi, i = 1, ..., 15. Найти среднее арифметическое значение...

Массив: Найти среднее арифметическое элементов массива, имеющих нечетное значение
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от //0 до...

Найти среднее арифметическое всех элементов массива, имеющих нечётное значение
2) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до...

Найти среднее арифметическое элементов массива, значение которого меньше заданного
Найти среднее арифметическое элементов массива, значение которого меньше заданного, в каждом...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru