Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ строки в паскале

Автор: radeon37 23.05.2010 18:43

Подсчитать сколько слов во фразе «Программа модификации объектных модулей предназначена для внесения изменений в объектные модули» заканчивается на одинаковые буквы. Если таких слов нет, то подсчитать количество букв «п» в тексте.

Автор: Гость 23.05.2010 19:41

А что конкретно для этой фразы??

Автор: radeon37 23.05.2010 19:43

Цитата(Гость @ 23.05.2010 15:41) *

А что конкретно для этой фразы??


Подсчитать сколько слов заканчивается на одинаковые буквы. Если таких слов нет, то подсчитать количество букв «п» в тексте.

Автор: volvo 23.05.2010 20:13

Цитата
Подсчитать сколько слов заканчивается на одинаковые буквы.
Ну вот тебя и спрашивают, в том примере, который ты привел, сколько слов заканчиваются на одну и ту же букву? Одно? Два? Три? Посчитай, и скажи, а не перепечатывай задание... А потом расскажешь КАК считал.

Автор: Гость 23.05.2010 20:16

function rav(s:string) : boolean;
begin
if s[1]=s[length(s)] then
rav:=true
else
rav:=false;
end;
type
prob=array[1..128] of integer;
slova=array[1..128]of string;
var
p:prob;
t:slova;
sc,i,k,r,j:integer;
s:string;
begin
readln(s);
s:=' '+s+' ';
k:=1;
for i:=1 to length(s) do
begin
if s[i]=' ' then
begin
p[k]:=i;
k:=k+1
end;
end;
for i:=0 to (k) do
begin
for j:=p[i]+1 to p[i+1]-1 do
begin
t[r]:=t[r]+s[j];
end;
r:=r+1;
end;
for i:=1 to r do
begin
if rav(t[i])=true then
sc:=sc+1;
end;
if sc<>0 then
writeln(sc,' слов начинающихся и заканчивающихся на одну и ту же букву')
else
begin
for i:=1 to length(s) do
begin
if s[i]='П'
then sc:=sc+1;
end;
writeln(sc,' букв "П"';
end;
readln
end.

Автор: Гость 23.05.2010 20:21

Чуть ошибся)
Вот так

function rav(s:string) : boolean;
begin
if s[1]=s[length(s)] then
rav:=true
else
rav:=false;
end;
type
prob=array[1..128] of integer;
slova=array[1..128]of string;
var
p:prob;
t:slova;
sc,i,k,r,j:integer;
s:string;
begin
readln(s);
s:=' '+s+' ';
k:=1;
for i:=1 to length(s) do
begin
if s[i]=' ' then
begin
p[k]:=i;
k:=k+1
end;
end;
for i:=0 to (k) do
begin
for j:=p[i]+1 to p[i+1]-1 do
begin
t[r]:=t[r]+s[j];
end;
r:=r+1;
end;
for i:=1 to r do
begin
if rav(t[i])=true then
sc:=sc+1;
end;
if sc<>0 then
writeln(sc,' слов начинающихся и заканчивающихся на одну и ту же букву')
else
begin
for i:=1 to length(s) do
begin
if (s[i]='п') or (s[i]='П')
then sc:=sc+1;
end;
writeln(sc, ' букв "П"');
end;
readln
end.

Автор: radeon37 23.05.2010 23:00

не могли бы вы написать код для "заканчивающихся на одинаковую букву")) там получается два слова заканчиваются на букву "а" и два слова на букву "я"...и можно ли сделать без массива?)))))

Автор: Гость 25.05.2010 5:03

без массива к сожалению не умею, я только учусь пока))
а насчет букв я чето тебя не понял, чего ты конкретно хочешь

Автор: Lapp 25.05.2010 6:29

Цитата(radeon37 @ 23.05.2010 20:00) *
не могли бы вы написать код для "заканчивающихся на одинаковую букву")) там получается два слова заканчиваются на букву "а" и два слова на букву "я"...
radeon37, ты пойми, что от тебя хотят тут более конкретной постановки задания. Никому неясно, что означает "сколько слов заканчиваются на одинаковые буквы". Это задание можно трактовать двояко. Скажи, что должно быть в ответе к данному примеру. Пока не поставишь условие - какой смысл решать?

варианты ответа такие:

1-й вариант:
6

2-й вариант:
а - 2
и - 2
я - 2

Автор: radeon37 25.05.2010 18:54

Цитата(Lapp @ 25.05.2010 2:29) *

radeon37, ты пойми, что от тебя хотят тут более конкретной постановки задания. Никому неясно, что означает "сколько слов заканчиваются на одинаковые буквы". Это задание можно трактовать двояко. Скажи, что должно быть в ответе к данному примеру. Пока не поставишь условие - какой смысл решать?

варианты ответа такие:

1-й вариант:
6

2-й вариант:
а - 2
и - 2
я - 2


нужно, чтобы был второй вариант...