Среднее арифметическое целого массива
Прочитайте статью о том, как определять и использовать функции в своей программе. Если вы не знайте, как работать с массивами, обратитесь к этой статье: Одномерные и двумерные массивы в С++. Если вы хотите сделать программу более универсальной, используйте динамические массивы. Результат работы программы показан ниже:
50 83 54 32 73 22 51 67 28 7
среднее арифметическое = 46.7
Вот пример работы этой программы:
50 83 54 32 73 22 51 67 28 7
среднее арифметическое = 46.7
Следующее решение данной задачи предоставил нам Vladislav Anonymous, за это мы ему очень благодарны. Код программы смотрим ниже, разбираемся и задаем вопросы на форуме.
C#. Решение задач на операторы цикла для обработки одномерных массивов
Решение задач на операторы цикла для обработки одномерных массивов. Циклы for , while , do…while
Содержание
- 1. Нахождение суммы элементов массива из n вещественных чисел
- 1.1. Решение с использованием цикла for
- 1.2. Решение с использованием цикла while
- 1.3. Решение задачи. Цикл do…while
- 2.1. Решение. Цикл for
- 2.2. Решение. Цикл while
- 2.3. Решение. Цикл do…while
- 3.1. Цикл for
- 3.2. Цикл while
- 3.3. Цикл do…while
Поиск на других ресурсах:
1. Нахождение суммы элементов массива из n вещественных чисел.
1.1. Решение с использованием цикла for
1.2. Решение с использованием цикла while
Решение задачи с использованием цикла while
1.3. Решение задачи. Цикл do…while
2. Нахождение среднего арифметического элементов массива из n вещественных чисел.
Чтобы найти среднее арифметическое элементов массива, сначала нужно найти сумму элементов массива, а потом эту сумму поделить на число элементов массива.
2.1. Решение. Цикл for
В примере пропущен ввод массива и количества элементов массива n
2.2. Решение. Цикл while
В примере пропущен ввод массива и количества элементов массива n .
2.3. Решение. Цикл do…while
В примере пропущен ввод массива и количества элементов массива n
3. Поэлементное копирование массивов
3.1. Цикл for
В данном примере приводится фрагмент кода, копирующий массив A из 10 вещественных чисел ( float ) в массив B .
3.2. Цикл while
Фрагмент копирования массива A в массив B с использованием цикла while
3.3. Цикл do…while
Реализация копирования массивов с использованием цикла do…while
4. Обращение массива (получить результирующий массив, обратный к исходному)
Пусть имеются два массива с именами A и B . Массив A задается. Получить результирующий массив B , обратный к исходному массиву A (элементы массива B идут в обратном порядке по отношению к массиву A ).
В данном примере приводится реализация обращения массива с помощью трех известных операторов цикла.5. Обращение массива без использования дополнительного массива
Задан массив A с n вещественных чисел. Реализовать операцию обращения массива без использования дополнительного массива.
В приведенном ниже коде реализовано обращение массива с использованием операторов циклов for , while , do…while .C++: Среднее арифметическое + нахождение минимального и максимального элементов (индексов) + сортировка
Вычислить среднее арифметическое элементов массива X=(x1,x2,…,xn),
расположенных между его минимальным и максимальным значениями.
Если минимальный элемент размещается в массиве раньше
максимального, то упорядочить массив на данном промежутке по
возрастанию его элементов, и наоборот, если минимальный элемент
размещается после максимального, то упорядочить по убыванию.PS: Нельзя использовать динамическую память 🙁
Задача на самом деле не задача, а состоящая из трех подзадач:Нахождение минимального и максимального элементов массива.
Я это делал тут (и наверное тут), но можно лучше, поэтому решил переписать код по-правильному что ли.
Для того, чтобы найти минимальный и максимальный элементы и их индексы, значения этих элементов таскать с собой не надо. Можно оперировать только с индексами, так как при помощи индекса можно обратиться к значению ячейки массива. Код получился такой:
Если разобрать его построчно, то будет так:
- Сначала присваиваем переменным, в которых будут индексы минимального и максимального элементов 0. Считаем, что все находится в 0-ой ячейке.
- Пробегаем по всему массиву, благо он маленький, и смотрим, если текущий элемент массива стал меньше чем элемент с индексом imin (для этого обращаемся по индексу к элементу), то переприсваиваем индекс. Тоже самое и с максимальным, только знак другой.
Примечание: int n — длина массива; int imin, imax — индексы минимального и максимального элементов соответственно. arr[] — массив
Вычислить среднее арифметическое для этого промежутка
Для второго шага будет круто использовать функцию. Так как нам нужно найти среднее значение между минимальным и максимальным элементам, то в функцию следует передать: ссылку на массив (массив), индекс минимального и индекс максимального элементов.
Дальше нужно пройтись по этим элементам и просчитать. Но фишка в том, что максимальный элемент может идти до минимального, и цикл выполняться не будет. Понадобится условие и 2 разных цикла.
Мне кажется, что весьма очевидно, что делает эта функция.
Отсортировать промежуток по возростанию или убыванию в зависимости от того, как расположены минимальный и максимальный элементы.
Последнее, что нужно сделать — выполнить сортировку. Алгоритм не указан. Взял первый попавшийся и слегка его модифицировал. Сделал из него функцию (по-хорошеу конечно процедуру, но да ладно):
на вход подается массив (так же как и в функцию вычисления среднего арифметического) число f (first) — с какого индекса начинать сортировку и t (to) до какого индекса производить сортировку. Последний параметр order определяет порядок сортировки (по возрастанию или по убыванию).
На самом деле он самый интересный в этой функции. Порядок сортировки зависит от знака в условии. > или <. Order — логическая переменная и второе выражение тоже логическое выражение. Если применить к нему операцию XOR (логическое отрицание, значек ^, то знак развернется)
Собрав все воедино можно получить такой код:
Пример работы программы:

5 Responses
Помогите пожайлуста.Что делать когда нужно подсчитать количество цифер между первим максимальним и последним минимальним (и наоборот-между первим мін і последним макс) если значения в масиве могут повторяться
Привет!
Первый максимальный — точное сравнение. A[i] > max
Последний минимальный это не точное сравнение a[i] Войдите, чтобы ответитьСпасибо что откликнулся) Задание стоит следующее -Найти макс и мин значения в массиве, посчитать сколько цифр находится в промежутке между ними. Но возник вопрос так как массив задается рандомно, то что будет, если макс и мин значение будет повторятся несколько раз. Как указать что нужное нам именно первое макс и последнее мин значения.(Например випадают цифри 79,79,6,7,8,9,45,4,-8,-8 и нам нужно первое 79 и последнее — 8)У меня получился такой код.Что нужно добавить еще
#include
#include
using namespace std;
void main()
<
srand(time(0));
const int size=10;
int mas[size];
for(int i=0; i<size;i++)
<
mas[i]=rand()%201-100;
cout<<mas[i]<<endl;
>
int max=mas[0];
int min=mas[0];
for(int i=0;i<size;i++)
<
if(maxmas[i])min=mas[i];
>
int imax=0;
int imin=0;
for(int i=0;imas[imax]) imax=i;
if(mas[i]<=mas[imin])imin=i;
>
int count=0;
if(imin<imax)
<
for(int i=imin; i<imax;i++)count++;
>
else
<
for(int i=imax;i<imin;i++)count++;
>
cout<<endl<<"max "<<max<<endl;
cout<<"index max "<<imax<<endl;
cout<<endl<<"min "<<min<<endl;
cout<<"index min "<<imin<<endl;
cout<<endl<<"count mig min i max "<<count<<endl;Такая идея:
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//#include «stdafx.h»
#include
#include
#includeint _tmain(int argc, _TCHAR* argv[])
<
int a[250];
int n = 0, min=32768, max=-32767, maxi, mini;
printf_s(«Enter size of array (1..250):»);
scanf_s(«%d», &n);
srand(time(NULL));
for (int i = 0; i max) // первый максимум
<
max = a[i];
maxi = i;
>
>
printf_s(«\nlast min = %d in postion %d\nfirst max = %d in position %d\ndigits between %d\n»,min, mini,max, maxi, abs(maxi-mini));
system(«pause»);
return 0;
>
http://pyatnitsev.ru/wp-content/uploads/2014/01/ConsoleApplication1.zip — вот
как осуществить нахождение минимальных и максимальных элементов индекса при помощи ввода массива с клавиатуры, а не с помощью случайного набора?
Как найти среднее число массива с помощью кода C#?

freeExec, я не студент. Мне 55 лет. Что касается стоимости оплаты. Возможно я не понял правил этого ресурса. Я думал, что здесь можно задавать вопросы и если у кого то есть желание, то он может ответить просто так, из желания помочь. Я действительно пробовал решить. Но не смог. Ниже привожу своё неправильное решение.
int [] myArray = new int []< 3, 10, 16, 2, 8 >;
int minCount = myArray[0];
int Index_i = 0;
int maxCount = myArray[0];
for (int i = 0; i < myArray.Length; i++)
<
if (minCount > myArray[i])
<
minCount = myArray[i];
Index_i = i;
>
else if (maxCount < myArray[i])
<
maxCount = myArray[i];
Index_i = i;
>
>
Console.Write(«Минимальное число массива: » + minCount);Console.Write(«\nМаксимальное число массива: » + maxCount);
int Amount_of_num = (maxCount — minCount) + 1; //Количество чисел в массиве
int Average_num = (Amount_of_num / 2) + minCount; // Среднее число массиваfor (int i = 0; i < myArray.Length; i++)
<
if (myArray[i] == Average_num ) // < 3, 10, 16, 2, 8 >
<
myArray[i] = Average_num; // 16 — 2 = 14; 14 / 2 = 7; 7 + 2 = 9
>
else if (myArray[i] <= Average_num) //Average_num = 9
<
myArray[i] = Average_num;
>>
Console.WriteLine(«\nСреднее число массива: » + Average_num);
Console.ReadLine();
Никто не читает правила ресурса — это факт, но они есть, смотрите пункт 5.12. Задачи и задания.
Вот и нужно было привести этот код. Да, может быть он где-то и ошибается, но это то от чего можно отталкиваться и искать шаги, где допущена ошибка.