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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.12.2009, 14:14
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию Вывести все звонкие согласные, которые входят хотя бы в одно слово

Код:
{$APPTYPE CONSOLE}
    uses
  SysUtils;

var s,slovo,slovo1,slovo2:string;
  k,i,j,ns,ks:integer;
   c:char;
  mn1, mn2,mn3,sb: set of char;
begin
writeln('Enter string ');
readln(s);
sb:=['b','d','g','j','n','m','r','v','z','w'];
while (s[i]=' ') and (i<=length(s)) do
i:=i+1;
while(s[i]<>' ') and (i<=length(s)) do i:=i+1;
begin
mn1:= mn1 +[s[i]];
i:=i+1;
end;
i:=length(s);
while(s[i]=' ') and (i>0) do i:=i-1;
while(s[i]<>' ') and(i>0) do i:=i-1;
begin
mn2:=mn2+[s[i]];
i:=i-1;
end;
while i<=k do
begin
while(s[i]=' ') and (i<=k)do i:=i+1;
ns:=i;
while(s[i]<>' ') and (i<=k) do i:=i+1;
ks:=i;
slovo:=copy(s,ns,ks-ns);
for j:=1 to length(slovo) do
mn3:=mn3 +[slovo[i]];
end;
mn3:=mn3*sb -mn2 -mn1;

for c:=chr(0) to chr(255) do
if c in mn3 then write(c,' ');
readln;
end.
Тут вообще есть хоть что то правильное???

Последний раз редактировалось Asira, 27.12.2009 в 18:24.
Ответить с цитированием
  #2  
Старый 15.12.2009, 17:18
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

На счет правильности не знаю, вот тебе рабочий вариант:
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S:String;
  b:byte;
  sb: set of char;

begin
  Writeln('Enter string ');
  Readln(S);
  sb:=['b','d','g','j','n','m','r','v','z','w'];
  Delete(S, 1, Pos(' ', S));
  b:=length(s);
  while (b > 1) and (S[b]<>' ') do Dec(b);
  Delete(S, b, Length(S)-(b+1));
  for b:=1 to Length(S) do
    if S[b] in sb then
      begin
      sb:=sb-[S[b]];
      write(S[b],' ');
      end;
  readln;
end.

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

СПАСИБИЩЕ!!!!!!!!!!!!!!!Хоть один отзывчивый человек тут нашёлся!!!!!
Ответить с цитированием
  #4  
Старый 15.12.2009, 17:32
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Да не за что, главное, что бы было понимание, как этот код работает!)
Ответить с цитированием
  #5  
Старый 15.12.2009, 17:34
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

хотя вроде бы эта программа тож не удовлетворяет условию-
за исключением тех, которые входят в первое и последнее слово
Ответить с цитированием
  #6  
Старый 15.12.2009, 17:35
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Ну дык, первое и последнее слова, сразу отбрасываются.
Код:
  Delete(S, 1, Pos(' ', S));
  b:=length(s);
  while (b > 1) and (S[b]<>' ') do Dec(b);
  Delete(S, b, Length(S)-(b+1));
Ответить с цитированием
  #7  
Старый 15.12.2009, 17:38
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

А вдруг эти согласные звонкие встречаются и в первом слове например а прога их выведет хотя не должна этого делать....
Ответить с цитированием
  #8  
Старый 15.12.2009, 17:40
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Например есть строка
drecgre cghkjfjkld crtuifh drefjtg
прога выведет d ...... хотя не должна этого делать ведь d есть и в первом слове помимо второго
Ответить с цитированием
  #9  
Старый 15.12.2009, 17:41
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Не выведет, так как эти слова - именно первое и последнее отбрасываются, а после проверятся вся строка. Внимательнее смотри, код работает по твоим условиям.
Удаляем все до первого пробела:
Код:
  Delete(S, 1, Pos(' ', S));
Удаляем все после последнего пробела:
Код:
  b:=length(s);
  while (b > 1) and (S[b]<>' ') do Dec(b);
  Delete(S, b, Length(S)-(b+1));
В S - остается строка без первого и последнего слова, и с ней мы уже начинаем работать.
Ответить с цитированием
  #10  
Старый 15.12.2009, 17:42
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Понял что ты имеешь ввиду, держи:
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S, NewS:String;
  b:byte;
  sb: set of char;

begin
  Writeln('Enter string ');
  Readln(S);
  sb:=['b','d','g','j','n','m','r','v','z','w'];
  for b:=1 to Pos(' ', S) do
    if S[b] in sb then
      sb:=sb-[S[b]];
  Delete(S, 1, Pos(' ', S));
  b:=length(s);
  while (b > 1) and (S[b]<>' ') do
    begin
    if S[b] in sb then
      sb:=sb-[S[b]];
    Dec(b); 
    end;
  Delete(S, b, Length(S)-(b+1));
  for b:=1 to Length(S) do
    if S[b] in sb then
      begin
      sb:=sb-[S[b]];
      write(S[b],' ');
      end;
  readln;
end.

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

Спасибо!!!!!!!!!!!! Вот теперя всё тип-топ!!!!!!!!!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter