Плиз хелп Составьте программу вычисления в массиве A(15) произведения нечетных элементов. Сделайте пожалуйста программу на паскале

Ответы

Ответ дал: KnowsUser1
2

Ответ:

--- PascalABC.NET 3.6.3 ---

begin

 var A := ArrRandom(15, -99, 99);

 A.Println;

 A.Where(p -> p mod 2 <> 0).Product(x -> BigInteger(x)).Println;

end.


BobbyFresnel: В PascalABC.NET, слава богу, есть главный разработчик, который тщательно следит, чтобы в язык не проникали конструкции, делающие восприятие кода неоднозначным.
KnowsUser1: Кстати, на счёт приведённой мной конструкцией, очень забавно - Её не понял PyLint) Оно запустилось с SyntaxError и нарисовало [6, 5, 10] )))
BobbyFresnel: )))
KnowsUser1: Тут не то, что неоднозначное восприятия кода, тут просто работает то, что по мнению среды разработки вообще не должно запускаться)
BobbyFresnel: На самом деле, это одно из возможных прочтений. Сначала фиксируем значение "a" и строим список. Потом присваиваиваем переменным значения из списка. Вот тут только надо решить, как это делать - от головы списка или от хвоста.
KnowsUser1: Слева на право, судя по всему, то есть от головы
BobbyFresnel: Сейчас для PascalABC,NET, если я правильно понял, на стадии осмысления идея сделать именованные элементы кортежей. Т.е. осмысления, надо это или нет. Но там в присваивании однозначная трактовка. Сначала вычисляется правая часть, потом переливается в левую.
BobbyFresnel: Т.е. для a := 3; var b, c: integer; (a,b,c) := (a+1, a+3, a+2); сначала построится кортеж на базе исходного значения a, затем уже его значения будут раскиданы по a, и, с. Это еще не именованные элементы кортежа, просто кортежное присваивание. Привел, чтобы показать, как обеспечивается однозначность.
BobbyFresnel: Недавно на одном из сайтов нарвались на задачку для Паскаля, где надо было читать данные "до исчерпания входного потока". Т.е. там данныве записывались в файл (пусть это будет 1.txt), потом программа компилировалась в program.exe и все это запускалось командой program.exe < 1.txt
BobbyFresnel: Для кода программы это не ввод с клавиатуры, но и не чтение файла. Выручила конструкция while not Eof do без указания имени файла.
Ответ дал: LRSM
0

PascalABC.NET

Ответ:

  • begin
  • ArrRandom(15, -99, 99).Println.Product(x -> x.IsOdd?BigInteger(x):1).Print
  • end.

Пример работы:

Приложения:
Вас заинтересует