Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 3 и оканчивающихся на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: сумму чисел, кратных 3 и оканчивающихся на 2. Что выведет программа при вводе последовательности 32, 12, 30, 35, 42?
1. Если число короткое можно пользоваться div и mod, т.е. например, 1-я цифра 3-значного числа - это целое от деления на 100, третья цифра - остаток от деления на 10, чтобы найти вторую цифру надо сначала взять целое от деления на 10 и потом остаток от деления этого целого на 10.
2. Если число длинное или его длина неизвестна, то лучше преобразовать его в строку, найти длину строки и брать по одному символу с соответствующим индексом.
Блок-схема первого варианта на фото
var n:=readInteger('Число элементов массива-');
var a:=ArrRandom(n,-50,50); a.Println;
for var i:=1 to n-2 do a[i]:=2*(i+1);
a.Println
end.
Пример
Число элементов массива- 10
-40 4 -49 0 -47 41 49 33 -31 -1
-40 4 6 8 10 12 14 16 18 -1
begin
var n:=readInteger('Число элементов массива-');
var a:=ArrRandom(n,-50,50); a.Println;
var i1:=a.IndexMax;
var i2:=a.IndexMin;
Writeln(a[min(i1,i2)+1:max(i1,i2)].Where(x->x<0).Sum)
end.
Пример
Число элементов массива- 18
-45 -30 -49 -44 34 -5 -12 -28 22 14 -39 -20 -46 50 6 21 20 -47
-194
begin
var a:=ReadlnString('Введите строку;').ToCharArray;
// было сделано так только ради получения массива символов,
// который на самом деле только мешает
Writeln(a);
if Pos('...',a.JoinIntoString)>0 then
Writeln('Троеточие в массиве есть')
else Writeln('Троеточия в массиве нет')
end.
Пример
Введите строку; 6ye$% DFDRT..drrtert...DFDGD
[6,y,e,$,%, ,D,F,D,R,T,.,.,d,r,r,t,e,r,t,.,.,.,D,F,D,G,D]
Троеточие в массиве есть