Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.12.2009, 17:04
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию Делфи множества....

Дана непустая последовательность слов из строчных латинских букв, слова разделены пробелами. Вывести: Все глухие согласные, которые входят в слова, не содержащие звонких согласных букв.
Мой вариант... но он не работает
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;


  var mn1,mn2: set of char;
  s,slovo:string;
i,j,k,ns,ks:integer;
c:char;

begin

mn1:=[];
mn2:=[];

write('inter string ');
readln(s);
while i<= length(s) do begin
while(s[i]=' ')and(i<=length(s)) do i:=i+1;
ns:=i;
while(s[i]<>' ')and(i<=length(s))do i:=i+1; ks:=i;
slovo:=copy(s,ns,ks-ns);
while j<= length(slovo) do
if slovo[j]='b,d,g,j,n,m,r,v,z,w' then    
 for k:=1 to length(slovo) do
mn1:=mn2+[slovo[j]];
for j:=1 to length(slovo) do
mn2:=mn2+[slovo[j]];
mn2:=mn2*['c','f','h','k','l','q','p','s','t','x'];
for c:=chr(0) to chr(255) do
if c in mn2 then write(c,' ');
 end;
__________________
Asira
Ответить с цитированием
  #2  
Старый 30.12.2009, 17:10
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

А что тебя не устроило в том варианте, что я тебе ранее скидывал? (И нет смысла для одного и того же вопроса заводить новые темы, можно и старую было продолжать...)

вот это не правильно: if slovo[j]='b,d,g,j,n,m,r,v,z,w' then
Ответить с цитированием
  #3  
Старый 30.12.2009, 17:15
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Вообще то это совсем другое задание
найти
Все глухие согласные, которые входят в слова, не содержащие звонких согласных букв.
А там было только лишь про 1 и последнее слово
__________________
Asira
Ответить с цитированием
  #4  
Старый 30.12.2009, 18:09
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Держи)
Написал с функциями, для более простого понимания, можешь их объеденить в один алгоритм, если потребуется.

Код:
{$APPTYPE CONSOLE}

uses
  SysUtils,
  Classes;

type
  TSetChar = Set of char;

function WordIsHaveChars(const aWord:String; const aChars:TSetChar):boolean;
//возвращает истину, если в слове есть хотя бы один символ из множества
var
  b:byte;
begin
  Result:=false;
  if Length(aWord) > 0 then
    for b:=1 to Length(aWord) do
      if aWord[b] in aChars then
        begin
        Result:=false;
        exit;
        end;
end;

function WordGetHaveChars(const aWord:String; const aChars:TSetChar):TSetChar;
//возвращает символы, которые встречаются и в слове и во множестве
var
  b:byte;
begin
  Result:=[];
  if Length(aWord) > 0 then
    for b:=1 to Length(aWord) do
      if aWord[b] in aChars then
        Result:=Result+[aWord[b]];
end;

var
  Str, tmpStr:String;
  i:integer;
  ResChars:TSetChar;
  c:char;

begin
  Write('Enter string:');
  Readln(Str);
  tmpStr:='';
  ResChars:=[];
  //парсим строку на слова, попутно прогоняя их через функции
  if Length(Str) > 0 then
    for i:=1 to Length(Str)+1 do
      if (Str[i] <> #32) and (i <= Length(Str)) then tmpStr:=tmpStr+Str[i]
        else
          if Length(tmpStr) > 0 then
            begin
            if not WordIsHaveChars(tmpStr,['b','d','g','j','n','m','r','v','z','w']) then
              ResChars:=ResChars+WordGetHaveChars(tmpStr,['c','f','h','k','l','q','p','s','t','x']);
            tmpStr:='';
            end;
  //выводим результат
  for c:=chr(0) to chr (255) do
    if c in ResChars then
      write(c,' ');
  Readln;
end.

Последний раз редактировалось Asinkrit, 30.12.2009 в 18:19.
Ответить с цитированием
  #5  
Старый 30.12.2009, 18:16
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Спасибо!!!!!!!!!!!!!!!!!!
__________________
Asira
Ответить с цитированием
  #6  
Старый 30.12.2009, 18:20
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Обрати внимание, обновил алгоритм...
Ответить с цитированием
  #7  
Старый 30.12.2009, 18:49
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Да я заметила............... вот бы мне так программировать......
__________________
Asira
Ответить с цитированием
  #8  
Старый 30.12.2009, 18:51
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Все дело практики, чем больше пишешь, тем лучше понимаешь что пишешь)
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:22.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025