Предмет: Информатика,
автор: kondratenkonel
Дан целочисленный массив из 30 элементов.
Элементы массива могут принимать значения -1000 до 1000. Необходимо вывести среднее арифметическое тех элементов массива,которые по своему значению меньше последнего элемента этого массива.
Ответы
Автор ответа:
0
#include <iostream>
#include <iomanip>
#include <ctime>
int main()
{
setlocale(LC_ALL, "RUSSIAN");
const int N = 30;
int a = 0, count = 0;
int arr[N];
srand(time(NULL));
std::cout << "Массив: " << std::endl;
for (int i = 0; i < N; i++)
{
arr[i] = rand() % 2000 - 1000;
std::cout << std::setw(5) << arr[i];
}
for (int i = 0; i < N; i++)
if (arr[N] > arr[i])
{
a += arr[i];
count++;
}
std::cout << std::endl;
if (count == 0)
std::cout << "Нет элементов удовлетворяющих условию" << std::endl;
else
{
a /= count;
std::cout << "Среднее арифметическое элементов массива,которые по своему значению меньше последнего элемента этого массива: " << a << std::endl;
}
system("pause");
}
#include <iomanip>
#include <ctime>
int main()
{
setlocale(LC_ALL, "RUSSIAN");
const int N = 30;
int a = 0, count = 0;
int arr[N];
srand(time(NULL));
std::cout << "Массив: " << std::endl;
for (int i = 0; i < N; i++)
{
arr[i] = rand() % 2000 - 1000;
std::cout << std::setw(5) << arr[i];
}
for (int i = 0; i < N; i++)
if (arr[N] > arr[i])
{
a += arr[i];
count++;
}
std::cout << std::endl;
if (count == 0)
std::cout << "Нет элементов удовлетворяющих условию" << std::endl;
else
{
a /= count;
std::cout << "Среднее арифметическое элементов массива,которые по своему значению меньше последнего элемента этого массива: " << a << std::endl;
}
system("pause");
}
Автор ответа:
0
1. Современное решение
// PascalABC.NET 3.2, сборка 1472 от 08.06.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(30,-1000,1000); a.Println;
var s:=a.Where(x->x<a.Last);
if s.Count>0 then Writeln('Ср.арифм. отобранных равно ',s.Average:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
-481 170 -688 158 45 474 739 -704 380 -589 -733 410 -117 157 -541 459 -332 786 -85 -486 414 -271 -364 -96 -961 -338 -142 871 -278 691
Ср.арифм. отобранных равно -174.57692
2. Так обычно учат на школьной информатике
const
n=30;
var
a:array[1..n] of integer;
i,s,k:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=Random(2001)-1000;
Write(a[i],' ')
end;
s:=0;
k:=0;
for i:=1 to n-1 do
if a[i]<a[n] then begin
s:=s+a[i];
k:=k+1
end;
Writeln;
if k>0 then Writeln('Ср.арифм. отобранных равно ',s/k:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
279 397 -770 -405 -731 122 538 239 -298 -727 952 -191 -868 695 529 -147 -845 713 -193 -333 631 552 -355 -690 243 428 -366 -119 -811 140
Ср.арифм. отобранных равно -454.52941
// PascalABC.NET 3.2, сборка 1472 от 08.06.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(30,-1000,1000); a.Println;
var s:=a.Where(x->x<a.Last);
if s.Count>0 then Writeln('Ср.арифм. отобранных равно ',s.Average:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
-481 170 -688 158 45 474 739 -704 380 -589 -733 410 -117 157 -541 459 -332 786 -85 -486 414 -271 -364 -96 -961 -338 -142 871 -278 691
Ср.арифм. отобранных равно -174.57692
2. Так обычно учат на школьной информатике
const
n=30;
var
a:array[1..n] of integer;
i,s,k:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=Random(2001)-1000;
Write(a[i],' ')
end;
s:=0;
k:=0;
for i:=1 to n-1 do
if a[i]<a[n] then begin
s:=s+a[i];
k:=k+1
end;
Writeln;
if k>0 then Writeln('Ср.арифм. отобранных равно ',s/k:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
279 397 -770 -405 -731 122 538 239 -298 -727 952 -191 -868 695 529 -147 -845 713 -193 -333 631 552 -355 -690 243 428 -366 -119 -811 140
Ср.арифм. отобранных равно -454.52941
Похожие вопросы
Предмет: Английский язык,
автор: nuralinurkeldi47
Предмет: Математика,
автор: angelinapestrakova04
Предмет: Математика,
автор: tankixonelove12
Предмет: Физика,
автор: damochka99
Предмет: Математика,
автор: panlikova