Задан массив из N целых чисел от 1 до 3. Определить, входит ли в него последовательность символов 123, если да, то сколько раз и с каких позиций (N> 3).
пожалуйста помогите
Ответы
unit ZadanieGUIpr060unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
const
n = 100;
var
na: integer; {Переменная для хранения значения количества элементов массива}
i: integer; {Вспомогательная переменная для организации массива}
k: integer; {Переменная для хранения значения количества совпадений заданной последовательности}
Err: boolean; {Вспомогательная переменная для корректного выхода из цикла}
a: array [1..N] of '0'..'9'; { Переменная для хранения массива}
s,s1: string; {Промежуточные переменные для преобразования строковой информации}
begin
Memo1.Clear; {Очистка компонента Memo от информации}
Err:= false; {Начальные установки переменных}
k:= 0;
s:= '';
repeat
s:= InputBox('Ввод количества элементов', 'Введите количество элементов, которые будете вводить в массив (не более '+ inttostr(n)+')', '10');
if TryStrToint(s,na) and (na <= n )then {Проверка ввода на входимость в диапазон}
break
else
MessageDlg ('Ошибка ввода!',mtError,[mbYes],0);
until false;
s:= '';
s1:= '0';
for i:= 1 to na do
begin
repeat
if InputQuery('Ввод значений элемента', 'Введите значение ' + inttostr(i) + ' элемента: ', s1) then
begin
if (s1[1] in ['0'..'9']) then {Проверка ввода на входимость в диапазон}
break
else
MessageDlg ('Ошибка ввода!',mtError,[mbYes],0);
end
else
begin
MessageDlg ('Досрочный выход из режима ввода информации! Программа не выполнит своих задач.',mtInformation,[mbYes],0);
Err:= true; {Регистрация досрочного выхода из режима ввода информации}
break;
end;
until false ;
if Err then {Если обнаружен досрочный выход из режима ввода, то происходит выход из цикла}
break;
a[i]:= s1[1]; { Запоминание введенного символа в массиве}
s:= s + ' ' + s1; {Составление полной строки из элементов массива}
s1:= '0'; { Очистка промежуточной переменной от предыдущего значения}
Memo1.Clear; { Очистка компонента Memo1 от информации}
Memo1.Text:= s; { Вывод в компонент Memo1 информации о хранящихся символах в массиве}
end;
if Err then
Memo1.Lines.Add('Ввод информации в массив был аварийно завершен. Программа не может выполнить свою задачу.')
else
begin
for i:= 1 to na-2 do
if (a[i] = '1') and (a[i+1]= '2') and (a[i+2] = '3') then { Условие для проверки совпадений последовательности}
inc(k); {Подсчет количества совпадений}
if k = 0 then { Отображение ответа в зависимости от значения счетчика совпадений}
Memo1.Lines.Add('В данном массиве последовательность чисел 1,2,3 не обнаружена. ')
else
Memo1.Lines.Add('В данном массиве обнаружена последовательность чисел 1,2,3. Она встречается ' + inttostr(k) +' раз.')
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
end.