![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Задача звучит так  
		
	
		
		
		
		
		
	
		
		
	
	
	Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов Код: 
	unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
//Обработка события активизации формы
procedure TForm1.FormActivate(Sender: TObject);
begin
ComboBox1.SetFocus; //передача фокуса в ComboBox1
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
end;
 
//Обработка события нажатия левой кнопки мыши
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin //если нажата клавиша Enter
ComboBox1.Items.Add(ComboBox1.Text); //строка из окна редактирования заносится в      // список выбора
ComboBox1.Text:=' '; //очистка окна редактирования
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
var
 CPos: word;
  SPos: word;
begin
  SPos := 1;
  with Edit1 do
    for CPos := 1 to Length(Text) do
      if Text[CPos] <> Text[CPos+1]
        then
          begin
            if ((CPos-SPos+1) mod 2) = 0
              then
                ListBox1.Items.Add(Copy(Text, SPos, CPos-SPos+1));
            SPos := CPos+1;
end;
 
procedure TForm1.ComboBox1Click(Sender: TObject);
var
st:string;
n,i,nst,ind:integer;  a:array [1..3] of char;  b:boolean; s:real;
begin
n:=0;    //n-число слов в строке
ind:=0;
nst:= ComboBox1.ItemIndex; // определение номера выбранной строки
st:= ComboBox1.Items[nst]; //занесение выделенной строки в переменную st
for i:=1 to Length(st) do
begin
n:=length('st');
end;
If (n MOD 2) =0 then
 
memo1.Lines.add('Четное')
else
memo1.Lines.add('Нечетное');
end;
end. | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 3-хдневный бан. Учимся задавать вопросы корректно: указывать где ошибки и не создавать кучу тем... 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Ошибка, например, может возникать тут (во второй приведенной строке, но условие ошибки - в первой строке; ошибка - выход за пределы массива):  
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	for CPos := 1 to Length(Text) do
      if Text[CPos] <> Text[CPos+1]Код: 
	for i:=1 to Length(st) do
begin
n:=length('st');
end; |