Домашние задания: Информатика

Напишите программы в PascalABC.

1. Напишите программу, которая бы подсчитала количество цифр в строке символов (вводимые символы могут быть любые). Ввод строки завершается точкой.
2. Напишите программу, которая бы подсчитывала количество слов в строке. Слова разделяются пробелом, ввод строки завершается точкой.
3. Напишите программу, которая бы подсчитывала в строке количество символов в словах и выводила длину самого длинного слова. Слова разделяются пробелом, ввод строки завершается точкой.
4. Напишите программу расшифровки 4-буквенного однословного сообщения.
Для получения 4 букв нужно ввести 3 строки:
- из первой строки прочесть только первую букву;
- из второй строки прочесть только первую букву;
- из третьей строки прочесть первую и вторую буквы.
Далее расшифровать полученные четыре буквы по такому алгоритму: вместо первой и третьей букв подставить соответственно буквы, отстоящие от них по алфавиту на две буквы назад, а вторую и четвертую буквы оставить без изменения.
Для проверки возьмите пример, приведенный ниже.
Ввод:
FINISHED
OR
PENDING?
На выводе должно быть слово DONE.
упс...
ща все всё бросят и будут тебе прогу писать, тестировать и задорма высылать...
наивняк...
Евгения Синюгина
Евгения Синюгина
66 320
Лучший ответ
Astana Kazakhstan
Astana Kazakhstan
96 692
1.1)
var i, k: integer;
s: string;
begin
write ('строка символов = ');
readln (s);
s:=s+'.';
s:= copy (s, 1, pos ('.',s));
k:=0;
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then inc(k);
writeln (k);
end.

1.2)
var i, k: integer;
s: string;
begin
write ('строка символов = ');
readln (s);
s:=s+'.';
s:= copy (s, 1, pos ('.',s));
k:=0;
for i:=1 to length(s) do inc(k, ord(s[i] in ['0'..'9']));
writeln (k);
end.

2)
var n: integer;
s: string;
begin
write ('строка символов = ');
readln (s);
s:=s+'.';
s:= copy (s, 1, pos ('.',s));
s:=s+' ';
n:=0;
while length(s) > 0 do
begin
inc(n);
delete (s, 1, pos (' ', s,1));
end;
writeln (n);
end.

3)
var k: integer;
s: string;
begin
write ('строка символов = ');
readln (s);
s:=s+'.';
s:= copy (s, 1, pos ('.',s)-1);
s:=s+' ';
k:=0;
while length(s) > 0 do
begin
if length(copy (s, 1, pos (' ', s, 1))) > k then k:=length(copy (s, 1, pos (' ', s, 1)));
delete (s, 1, pos (' ', s,1));
end;
writeln ('Количество символов самого длинного слова = ', k-1);
end.

4)
var s, sn: string;
begin
readln (s);
if ord(s[1])-2 < ord('A') then sn:=chr(ord('Z')-1-(-ord(s[1])+ord('A')))
else sn := chr(ord(s[1])-2);
readln (s);
sn:=sn + s[1];
readln (s);
if ord(s[1])-2 < ord('A') then sn:=sn+chr(ord('Z')-1-(-ord(s[1])+ord('A')))
else sn :=sn+ chr(ord(s[1])-2);
sn:=sn+s[2];
writeln (sn);
end.
Я сейчас без компа, да и строки плохо помню, но +- подскажу
Var sr:string;
C:char;
K,i:integer;
Begin
Read(st);
For i:=1 to lenght(st) do begin c:=st[i];
Тут нужно с помощью функции (вроде, Val) преобразовать в число, глянуть в инете какие значения для цифр и сделать ограничение типа if c<10 then k:=k+1;
После этого завершаем цикл end;
И выводим значение write(k); end.
2. Аналогично, находишь значение пробела и точки, подсчитываешь их количество и выводишь его.
3.циклом от пробела до пробела и присваивать после цикла в переменную максимальное значение
4.берешь строки st1, st2,...
И из каждой выбираешь нужные тебе элементы st1[i], st2[i],...
Затем переводишь в числа для поиска разницы между буквами в алфавите ибо в кодировке буквы по алфавитц расставлены