Задача 1.
Вкусный завтрак в школьной столовой стоит A гривен и B копеек. Степан заплатил C гривен и D копеек. Напишите программу, которая считает сдачу, полученную Степаном.
Логика решения:
- Перевести все деньги в копейки, чтобы получать решение в меньшее количество действий.
- Проверить, может ли Степан в принципе позволить себе завтрак.
- От денег Степана отнять стоимость завтрака. Поскольку мы все перевели в копейки, то выводить надо два числа:
- Целая часть от полученной разности делить на 100 - гривны
- Остаток от деления полученной разности делить на 100 - копейки
program z9_1;
var
a,b,c,d,e,f:integer;
begin
writeln('Vvedi cenu zavtraka');
readln(a,b);
writeln('Vvedi summu Stepana');
readln(c,d);
If (a*100+b<c*100+d) then
begin
e:=((c*100+d)-(a*100+b))div 100;
f:=((c*100+d)-(a*100+b))mod 100;
Writeln('Sdacha=',e,'grn ',f,' kop');
end
else
writeln ('U Stepana malo deneg!');
end.
Задача 2.
Задана строка символов. Среди литер этого текста особую роль играет знак #, появление которого означает отмену предыдущей литеры текста; k знаков # отменяют k предыдущих литер (если такие есть) Напечатать строку с учетом роли знака #. Например, строка "VR#Y##HELO#LO" должна быть напечатана в виде: "HELLO".
Решение:
Обозначим s - исходную строку, dl - длину этой строки.
Для решения создадим ещё одну строку s1(вначале пустую).
Далее организуем цикл по номеру символа в строке s.
Если очередной символ не #, то добавим его к строке s1, если это знак # и строка s1 не пустая, то удалим из неё последний символ.
Программа, реализующая данный алгоритм, будет иметь следующий вид:
Программа, реализующая данный алгоритм, будет иметь следующий вид:
program z9_2;
var
s,s1:string;
dl,i,k:integer;begin
writeln('Введите строку');
readln(s);
dl:=length(s);
s1:='';
k:=0;
for i:=1 to dl do
if (s[i]='#')and(k<>0) then
begin
delete(s1,k,1);
k:=k-1;
end
else
begin
k:=k+1;
s1:=s1+s[i];
end;
writeln(s1);
end.
Комментариев нет:
Отправить комментарий