Информатика, вопрос задал alfa010010100 , 1 год назад

Задан массив из N целых чисел от 1 до 3. Определить, входит ли в него последовательность символов 123, если да, то сколько раз и с каких позиций (N> 3).

пожалуйста помогите​

Ответы на вопрос

Ответил AllexeyDo122
0

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.


alfa010010100: как всё сложно. а можно обычный паскаль, пожалуйста
AllexeyDo122: 533541!
alfa010010100: чего
Новые вопросы