Предмет: Информатика,
автор: dallanse2014
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения от -10000 до 10000. Написать алгоритм, который находит и выводит среднее арифметическое всех отрицательных элементов массива, оканчивающихся цифрой 7. Гарантируется, что хотя бы один такой элемент в массиве есть. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
const N=40
var
a:array [1..N] of integer;
i, s, r, x: integer;
sr: real;
begin
for i:=1 to N do readln (a[i]);
.....
end.
Ответы
Автор ответа:
0
//PascalABC.NET
//Дан целочисленный массив из 40 элементов. Элементы массива могут
//принимать значения от -10000 до 10000. Написать алгоритм, который
//находит и выводит среднее арифметическое всех отрицательных элементов
//массива, оканчивающихся цифрой 7. Гарантируется, что хотя бы один
//такой элемент в массиве есть. Исходные данные объявлены так, как
//показано ниже. Запрещается использовать переменные, не описанные
//ниже, но разрешается не использовать часть из них.
const
N = 40;
var
//a : array[1..N] of integer;
i, s, r, x : integer;
sr: real;
begin
//Для любителей заполнять вручную:
//for i := 1 to 40 do readln(a[i]);
//Заполним массив 40-ка случайными значениями
var a := ArrRandomInteger(N+1, -10000, 10000);
//Гарантировано разместим число, оканчивающееся на 7
a[Random(0,40)] := -10 * Random(0,999) - 7;
//Уберем лишний элемент, созданный автоматически
a[0] := 0;
//Напечатаем массив
a.println;
writeln('----------------');
//Просмотрим весь массив и найдя отрицательное, оканчивающееся на 7
//число, учтём его
foreach i in a do
if (i < 0) and (i mod 10 = -7) then begin
r += i; s += 1; write(i,' ')
end;
//Выведем среднее арифметическое
writeln('Ср.ар: ',r/s)
end.
//Дан целочисленный массив из 40 элементов. Элементы массива могут
//принимать значения от -10000 до 10000. Написать алгоритм, который
//находит и выводит среднее арифметическое всех отрицательных элементов
//массива, оканчивающихся цифрой 7. Гарантируется, что хотя бы один
//такой элемент в массиве есть. Исходные данные объявлены так, как
//показано ниже. Запрещается использовать переменные, не описанные
//ниже, но разрешается не использовать часть из них.
const
N = 40;
var
//a : array[1..N] of integer;
i, s, r, x : integer;
sr: real;
begin
//Для любителей заполнять вручную:
//for i := 1 to 40 do readln(a[i]);
//Заполним массив 40-ка случайными значениями
var a := ArrRandomInteger(N+1, -10000, 10000);
//Гарантировано разместим число, оканчивающееся на 7
a[Random(0,40)] := -10 * Random(0,999) - 7;
//Уберем лишний элемент, созданный автоматически
a[0] := 0;
//Напечатаем массив
a.println;
writeln('----------------');
//Просмотрим весь массив и найдя отрицательное, оканчивающееся на 7
//число, учтём его
foreach i in a do
if (i < 0) and (i mod 10 = -7) then begin
r += i; s += 1; write(i,' ')
end;
//Выведем среднее арифметическое
writeln('Ср.ар: ',r/s)
end.
Приложения:
Автор ответа:
0
Не очень хорошо вышло. Во-первых, нарушено условие задания в части запрета на описание новых переменных. Если Вы удаляете из var описание a:array [1..N] of integer, то не должны его описывать в другом месте, да еще и как динамический массив.
Автор ответа:
0
Во-вторых, получается смесь диалектов паскалей: в "древний" синтаксис вплетаются конструкции современной версии и возникает вопрос: если Вы уже пишете программу, несовместимую с другими диалектами паскалей, то почему используете не до конца современную модель языка? Получаются "бриллиантовые запонки на рабочем комбинезоне".
Автор ответа:
0
Ведь если пойти на нарушение, отмеченное выше, программу можно написать в пяток строчек...
Автор ответа:
0
Или все же какие-то соображения были, когда решили, что можно ArrRandom c автовыведением типа, оператор +=, foreach, Println, но нельзя LINQ to Objects ?
Похожие вопросы
Предмет: Алгебра,
автор: andreybakunin08
Предмет: Математика,
автор: Аноним
Предмет: География,
автор: crocomate
Предмет: Алгебра,
автор: Nightmonster
Предмет: Алгебра,
автор: Nightmonster