![]() |
|
|
Регистрация | << Правила форума >> | 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; |