Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 23:01   #1
PbIska
Пользователь
 
Регистрация: 27.04.2009
Сообщений: 17
По умолчанию Найти все слова в предложении

Задание: Найти все слова в предложении, которые содержат только заданные буквы.

сделал как найти заданную букву, а как буквы хз(( heeeeeeeeelp!



Код:
program qwerty;
uses crt;
var s,buf:string;
    i,j:byte;
    ch:char;
    Fl,ff:boolean;
begin
     ClrScr;
     ff:=false;
     Writeln('Vvedite stroku');
     Read(S);
     Readln;
     Writeln('Vvedite bukvu');
     Readln(ch);
     Writeln('Slova s dannoj bukvo v stroke:');
     For i:=1 to length(S) do
     begin
          If S[i]<>' ' then buf:=buf+S[i]
                       else if length(buf)<>0
                            then begin
                                     fl:=false;
                                     For j:=1 to length(buf) do if buf[j]=ch then begin fl:=true; ff:=true; end;
                                     If Fl then Writeln(buf);
                                     buf:='';
                                 end;
     end;
     fl:=false;
     For j:=1 to length(buf) do if buf[j]=ch then begin fl:=true; ff:=true; end;
     If Fl then Writeln(buf);
     If not FF then Writeln('Net ni edinogo slova s etoj bukvoj');
     Readln;
End.
PbIska вне форума Ответить с цитированием
Старый 11.05.2009, 23:21   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вводите текст. Потом буквы (строкой).
Например:
Код:
Text test ext ts
test
Код:
uses crt;
var
s,bukvy,buf : string;
i,len : integer;
mn : set of char;
fl : boolean;

begin
clrscr;
writeln('Vvedite stroku:');
readln(s);
writeln('Vvedite bukvy:');
readln(bukvy);
writeln;
mn := [];
for i:=1 to length(bukvy) do
 if not (bukvy[i] in mn) then include(mn,bukvy[i]);

len := length(s);

i:=1;
while i<=len do
 begin
 while (s[i]=' ') and (i<=len) do inc(i);
 buf := '';
 fl := true;
 while (s[i]<>' ') and (i<=len) do
  begin
  buf := buf + s[i];
  if not (s[i] in mn) then fl := false;
  inc(i);
  end;
 if fl then writeln(buf);

 inc(i);
 end;

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 23:21   #3
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Я бы решал через множества. Например, как-то так. Возможны ошибки. Главное — принцип.
Код:
program qwerty;
uses crt;
const
n = 255;
var
s, buf, rs : string;
i, j, k : byte;
ch : char;
letters : set of char;
Fl, ff : boolean;
begin
clrscr;
     
ff := false;

write('Введите строки: ');
read(s);
write('Введите количество букв: ');
read(k);

for i:=1 to k do
begin
     write('Введите ',i,' букву: ');
     read(ch);
     letters := letters + [ch];
end;
     
     writeln('Результат:');
     For i:=1 to length(S) do
     begin
          if s[i] <> ' ' then
          begin
               buf := buf + s[i];
          end
          else
          begin
              if (length(buf)<>0) then
              begin
                   fl := false;
                   for j:=1 to length(buf) do
                   begin
                        if buf[j] in letters then
                        begin
                             fl := true;
                             ff := true;
                        end;

                   If Fl then writeln(buf);

                   buf:='';
                   end;
              end;
          end;
     end;
     
     fl:=false;

     for j:=1 to length(buf) do
     begin
          if buf[j] in letters then
          begin
               fl:=true;
               ff:=true;
          end;
     end;
     
     If Fl then Writeln(buf);
     If not FF then writeln('Нет ни единого слова с этой буквой');
End.
UPD: Оказался вторым. Модераторам: сообщение можно удалить.
Пишу глупости.

Последний раз редактировалось Gongled; 11.05.2009 в 23:26. Причина: Добавил пояснение
Gongled вне форума Ответить с цитированием
Старый 11.05.2009, 23:47   #4
PbIska
Пользователь
 
Регистрация: 27.04.2009
Сообщений: 17
По умолчанию

ну это что то не то

по идее надо
Код:
text test ext ta 
a,x
text ext ta
PbIska вне форума Ответить с цитированием
Старый 11.05.2009, 23:49   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У вас в задании:
Цитата:
Найти все слова в предложении, которые содержат только заданные буквы.
То есть если в слове есть буква, которую не задали, то это слово уже не подходит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.05.2009, 21:23   #6
PbIska
Пользователь
 
Регистрация: 27.04.2009
Сообщений: 17
По умолчанию

хм, наверное и вправду так. спасибо огромное)
PbIska вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все слова встречающиеся более одного раза(Си).Использовать двумерный массив. persalena Помощь студентам 1 07.12.2008 00:46
Найти все слова, отличающиеся от заданного на 1 букву и имеющую ту же длинну. gred Помощь студентам 5 23.05.2008 08:32
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
В введенном предложении удалить все повторяющиеся слова Алена Помощь студентам 5 21.11.2007 14:12
Во вводимом тексте переписать все слова в обратном порядке. menlo Помощь студентам 5 17.11.2007 10:18