Seitowad
27.07.2020 16:05

Напишите программу (на языке ПАСКАЛЬ) для следующей задачи:
Пользователь вводит последовательность натуральных чисел. Их количество неизвестно. Пользователь завершает ввод чисел набрав число, большее 1000. После набора пользователем числа, большего 1000 на клавиатуре, программа выдает количество чисел из последовательности, оканчивающихся на цифру 5. Таких чисел в последовательности всегда не менее одного.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
rasukka
24.06.2022 03:54

Объяснение:

Пошаговое объяснение:

Кажется, догадался.

1) Плывут взрослая горилла и взрослая шимпанзе. Горилла остаётся на том берегу. Шимпанзе возвращается.

2) Шимпанзе берет ребенка гориллы и перевозит. Оставляет ребенка на том берегу и возвращается.

3) Шимпанзе берет своего ребенка и перевозит. А в обратную дорогу берет ребенка гориллы и возвращает на этот берег.

В результате на 1 берегу оказывается ребенок шимпанзе, взрослая шимпанзе и два ребенка гориллы.

А на 2 берегу взрослая горилла и ребенок шимпанзе.

Всех поровну, никто никого не съел.

4) Шимпанзе забирает своего второго ребенка и перевозит на тот берег. Обратно возвращается горилла.

5 и 6) Горилла за два рейса перевозит обоих своих детей.

0,0(0 оценок)
Ответ:
nastya19831507
14.03.2023 03:50

program rome_arabic;

Uses crt;

Const

{римские цифры}

RomeDigits:string='IVXLCDM';

{числа - соответствующие римским цифрам}

ArabicNumbers:array [1..7] of integer =

(1, 5, 10, 50, 100, 500, 1000);

(*

Функция определения правильности ввода арабского числа

*)

function IsArabic(s:string):boolean;

var i,t,c:integer;

begin

IsArabic:=true;

for i:=1 to length(s) do

if not(s[i] in ['0'..'9'])then

begin

IsArabic:=false;

exit;

end;

val(s,t,c);

if (c<>0)or(t<1) then

begin

IsArabic:=false;

exit;

end;

end;

(*

Функция перевода арабского числа в римское

*)

function ArabicToRome (s: string): string;

var

i,n,c: integer;

res: string;

begin

val(s,n,c);

res:='';

i:=7; {Проверяем от больших чисел к меньшим}

while n>0 do

begin

{находим следующее число - из которого будем формировать римскую цифру}

while ArabicNumbers[i]>n do i:=i-1;

res:=res+RomeDigits[i];

n:=n-ArabicNumbers[i];

end;

ArabicToRome := res;

end;

(*

Функция определения правильности ввода римского числа

*)

function IsRome(s:string):boolean;

var i:integer;

begin

IsRome:=true;

if s='' then

begin

IsRome:=false;

exit;

end;

for i:=1 to length(s) do

if not (s[i] in ['I', 'V', 'X', 'L', 'C', 'D', 'M']) then

begin

IsRome:=false;

break;

end;

end;

(*

Функция перевода римского числа в арабское

*)

function RomeToArabic (s: string): integer;

var

b:array[1..100] of integer;

i,j:integer;

res:integer;

begin

for i:=1 to length(s) do

begin

if s[i]='I' then b[i]:=1;

if s[i]='V' then b[i]:=5;

if s[i]='X' then b[i]:=10;

if s[i]='L' then b[i]:=50;

if s[i]='C' then b[i]:=100;

if s[i]='D' then b[i]:=500;

if s[i]='M' then b[i]:=1000;

end;

res:=b[1];{массив локальная переменная и

сравнение первого элемента с нулевым искажает число,

почему-то считает, что b[0]=1 и автоматом вычитает 2}

for i:=2 to length(s) do

begin

res:=res+b[i];

if b[i-1]<b[i] then res:=res-2*b[i-1]{вот здесь}

end;

RomeToArabic:=res;

end;

{Основная программа}

var

arabic: string; {арабское число}

rome: string; {римское число}

ask: char; {режим перевода чисел}

begin

clrscr;

writeln('Программа переводит римское число в арабское или арабское в римское');

repeat

clrscr;

writeln('Выберите режим перевода:');

writeln('1 - римское число в арабское');

writeln('2 - арабское число в римское');

writeln('другое - выход');

ask:=readkey;

case ask of

'1': begin {Римское в арабское}

write('Введите римское число: ');

readln(rome);

if IsRome(rome) then

writeln('Арабское число = ',RomeToArabic(rome))

else writeln('В римской записи числа допущены ошибки! Перевод не возможен!');

writeln('Press Enter...');

readln

end;

'2':begin {арабское в римское}

write('Введите арабское число: ');

readln(arabic);

if IsArabic(arabic) then

writeln('Римская запись = ',ArabicToRome(arabic))

else writeln('В арабской записи числа допущены ошибки! Перевод не возможен!');

writeln('Press Enter...');

readln

end;

else exit;

end;

until not(ask in ['1','2']);

end.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота