Другие языки программирования и технологии

Решить задания на pascal ABC

Дан одномерный массив символов. Выведите на экран сообщение "Да",если выполнеНо условие и сообщение "Нет" в противном случае
1)Массив содержит удвоенные символы
2)Массив содержит идущие подряд запятую и тире
3)Массив содержит последовательность из двух и более цифр
4)Первый и последний символы одинаковы
5)На четных листах не стоят пробелы
6)Первый и последний символы являются цифрами
7)Количество знаков препинания больше, чем количество цифр
8)Сумма всех цифр содержащихся в массиве, меньше размера массива
9)Восклицательные и вопросительные знаки находятся только на нечетных местах
10)Буква "b" встречается чаще чем буква "f"
300 рублей, но долларами тоже не брезгую...)))

var i, k1, k2, code_error: integer;
stroka: string;
b: boolean;
function yn (x: boolean): string; {функция yes_no}
begin
if x then write ('YES')
else write ('NO');
end;

begin
write ('stroka = ');
readln (stroka);
b:=false;
for i:=1 to length (stroka)-1 do
if stroka[i]=stroka[i+1] then b:=true;
write ('1) Массив содержит удвоенные символы? ');
writeln (yn(b));

write ('2) Массив содержит идущие подряд запятую и тире? ');
b:=false;
for i:=1 to length (stroka)-1 do
if copy(stroka,i,2) = ',-' then b:=true;
writeln (yn(b));

write ('3) Массив содержит последовательность из двух и более цифр? ');
b:=false;
for i:=1 to length (stroka)-1 do
if (stroka[i] in '0123456789') and (stroka[i+1] in '0123456789') then b:=true;
writeln (yn(b));

write ('4) Первый и последний символы одинаковы? ');
b:=false;
if (stroka[1]) = (stroka[length(stroka)]) then b:=true;
writeln (yn(b));

write ('5) На четных местах не стоят пробелы? ');
b:=false;
for i:=1 to length (stroka) do
if (stroka[i]=' ') and odd(i) then b:=true;
writeln (yn(b));

write ('6) Первый и последний символы являются цифрами? ');
b:=false;
if (stroka[1] in '0123456789') and (stroka[length(stroka)] in '0123456789') then b:=true;
writeln (yn(b));

write ('7) Количество знаков препинания больше, чем количество цифр? ');
k1:=0;
k2:=0;
for i:=1 to length (stroka) do
begin
if (stroka[i] in ',.!?:;-') then inc(k1);
if (stroka[i] in '0123456789') then inc(k2);
end;
writeln (yn(k1 > k2));

write ('8) Сумма всех цифр содержащихся в массиве, меньше размера массива? ');
k1:=0;
k2:=0;
for i:=1 to length (stroka) do
begin
if (stroka[i] in '123456789') then val (stroka[i],k1, code_error);
k2:=k2+k1;
end;
writeln (yn(k2 < length (stroka) ));

write ('9) Восклицательные и вопросительные знаки находятся только на нечетных местах? ');
b:=false;
k1:=0;
k2:=0;
for i:=1 to length (stroka) do
begin
if (stroka[i] in '!?') and odd(i) then inc(k1);
if (stroka[i] in '!?') and not odd(i) then inc(k2);
end;
if (k1 <> 0) and (k2 = 0) then writeln (yn(k1 > k2))
else writeln (yn(b));

write ('10) Буква "b" встречается чаще чем буква "f"? ');
k1:=0;
k2:=0;
for i:=1 to length (stroka) do
begin
if (stroka[i]='b') then inc(k1);
if (stroka[i]='f') then inc(k2);
end;
writeln (yn(k1 > k2));

writeln (chr(1087),chr(1088),chr(1086),chr(1089),chr(1090),chr(1086),
chr(32),chr(1086),chr(1093),chr(1091),chr(1077),chr(1090),chr(1100),')))');
end.

Спасибо принято говорить... 1,5 часа потратил все-таки
Дмитрий Левичев
Дмитрий Левичев
24 309
Лучший ответ