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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 11:55   #1
tatian@
Новичок
Джуниор
 
Аватар для tatian@
 
Регистрация: 13.11.2009
Сообщений: 1
Стрелка Множества и строки (что не так?)

Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти и вывести на экран группы с четным количеством символов.

Код:
unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Function FWrd(st : string) : string;
  var n,i,nst: integer;
      sl,srez : string;
 begin
   Result:='';  srez:='';  n:=Length(st);  
   if n=0 then exit;
      st:=st+' '; n:=n+1; sl:='';
    for i:=1 to n do
     if st[i]<>' ' then sl:=sl+st[i]
                              else
        if  sl<>''and (length(sl) Mod 2)=0 then begin  //  здесь ошибка? 
                 srez:=srez+' '+sl+';   sl:='';
                                     end;
       Result:=srez;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;  Edit2.Clear;
end;

procedure TForm1.Edit1KeyPress( Sender: TObject; var Key: Char);
   begin
    if Key = #13 then Edit2.Text:=FWrd(Edit1.Text);
  end;
end.

Последний раз редактировалось Stilet; 13.11.2009 в 13:17.
tatian@ вне форума Ответить с цитированием
Старый 13.11.2009, 13:25   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А Делфи че пишет?
Код:
if  sl<>''and (length(sl) Mod 2)=0 then
А если
Код:
if  (sl<>'') and (length(sl) Mod 2)=0 then
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.11.2009, 13:27   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю так:
Код:
var i,c:byte;s:string;
begin
 s:=Edit1.Text+' ';
 i:=1; repeat // while (i<length(s))and(i<>0) do begin
  c:=pos(' ',s);
   if (c-1) mod 2=0  then begin
    caption:=caption+' '+copy(s,1,c);
  end else begin
   i:=c;
  end;
  delete(s,1,c);
 until c=0;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10
помогите найти ошибку MyQwErTy Помощь студентам 1 05.11.2008 21:24
Помогите найти ошибку JOFRIF Помощь студентам 8 22.04.2008 14:22
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15