10 класс, Информатика, МНОГО БАЛЛОВ!
1)С клавиатуры вводится предложение, в котором слова разделены пробелами.
Определите, сколько слов в этом предложении начинается и заканчивается на одну и ту
же букву.
2)Напишите функцию, которая удаляет из переданной ей символьной строки все
символы, заключенные в угловые скобки '<' и '>' (вместе с этими скобками).
Внимание!
Требуется решение для 10 класса без сложных функций.
ReadInteger, Ord, Char и другие такого рода функции не приветствуются.
Answers & Comments
Ответ:
1)
var i,j:integer;
s:string;
c:char;
begin
write('Введите предложение: ');
readln(s);
s:=s+' ';
j:=0;
c:=s[1];
For i:=1 to Length(s) do
If s[i]=' ' then
begin
If c=s[i-1] then
j:=j+1;
If i<Length(s) then
c:=s[i+1];
end;
Writeln('Начинается и заканчвается на одну и ту же букву ', j, ' слов(о)(а)' );
end.
2)
var s: string;
begin
writeln('Введите строку с угловыми скобками:');
readln(s);
delete(s, pos('<', s), pos('>', s) - pos('<', s) + 1);
writeln('Результат:');
writeln(s)
end.
Ответ:
2)Pascal
var s: string;
i, f, g: integer;
begin
writeln('Введите строку с угловыми скобками:');
readln(s);
f := pos('<', s);
if f = 0
then begin
write('Нет "<"');
if pos('>', s) = 0
then writeln('и ">"')
else writeln
end
else begin
g := 0;
for i := length(s) downto 1 do
if s[i] = '>'
then begin
g := i;
break
end;
if g = 0
then writeln('Нет ">"')
else if f > g
then writeln('">" левее "<"')
else begin
delete(s, f, g - f + 1);
writeln('Результат:');
writeln(s)
end
end
end.
Если гарантированно, что в тексте есть только по одному правильно расположенному символу "<" и ">", то совсем просто:
Pascal
var s: string;
begin
writeln('Введите строку с угловыми скобками:');
readln(s);
delete(s, pos('<', s), pos('>', s) - pos('<', s) + 1);
writeln('Результат:');
writeln(s)
end.
0