|
||||||||||||||||||||||||||
ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ
Пензенский государственный университет Кафедра "Информационно-вычислительные системы" ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ Отчет о лабораторной работе №5 по дисциплине «Основы программирования»
Выполнил: ст-т гр. 19КП1 Тавакалов А.А Проверил: доцент каф. ИВС Хохлов А. Е./ Дрождин В.В
1 Формулировка задачи Выяснить, верно ли, что в строке имеются пять идущих подряд букв е. Даны целые числа , каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+, -, +, -, … или -, +, -, +,…), то ответом должна служить сама исходная последовательность. Иначе, получить все отрицательные члены последовательности, сохранив порядок их следования.
2.1 Требования к программе
Программа дать ответ на вопрос в формулировки задачи
2.2 Порядок контроля и приёмки
3 Описание программы Integer-переменнаяVar – описание переменных Begin – начало программы Then-оператор 3.1 Общие сведения
Программа разработана в среде lazarus.
3.2 Функциональное назначение
3.3 Описание логической структуры Схема программы представлена на рисунке 1.
Рисунок 1 – Схема программы
Вывод
В ходе выполнения лабораторной работы было сформулировано и утверждено техническое задание на разработку программы.
ТЕКСТ ПРОГРАММЫ Приложение А (обязательное) unit ZadanieGUIpr090unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls; const CountElement = 10; type TArr = array of integer; { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; StringGrid1: TStringGrid; StringGrid2: TStringGrid; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private a,b: TArr; n: integer; function DiffSignInArr(x: TArr): boolean; function NegativElement(x: TArr): TArr; public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } function TForm1.DiffSignInArr(x: TArr): boolean; {Функция возвращает true если элементы массива чередуются знаками} var i: integer; begin result:= true; for i := 0 to High(x) - 1 do if (x[i] * x[i + 1]) > 0 then begin result:= false; break; end; end; function TForm1.NegativElement(x: TArr): TArr; {Функция возвращает массив элементов, которые содержат только негативные элементы исходного массива} var i,j: integer; begin j:= -1; setLength(NegativElement,length(x)); for i:= 0 to high(x) do if x[i] < 0 then begin inc(j); NegativElement[j]:= x[i]; end; setlength(NegativElement,j+1); end; procedure TForm1.Button1Click(Sender: TObject); {Процедура-обработчик события "OnClick" кнопки "Создать"} var i: integer; begin if not TryStrToInt(Edit1.Text,n) then begin MessageDlg('Некорректное значение количества элементов последовательности.',mtError,[mbOk],0); n:= CountElement; Edit1.Text:= IntToStr(n); end; setlength(a,n); StringGrid1.ColCount:= n+1; for i:= 1 to n do StringGrid1.Cells[i,0]:= IntToStr(i); end; procedure TForm1.Button2Click(Sender: TObject); {Процедура-обработчик события "OnClick" кнопки "Вычислить"} var i: integer; flagerr: boolean; begin flagerr:= false; for i:= 1 to StringGrid1.ColCount-1 do if not TryStrToInt(StringGrid1.Cells[i,1],a[i-1]) then begin flagerr:= true; break; end; if flagerr then MessageDlg('Некорректное значение элемента в ' + IntToStr(i) + ' столбце.',mtError,[mbOk],0) else begin if DiffSignInArr(a) then { Условие для проверки на чередование знаков} b:= copy(a) { Исходный массив копируется в массив для ответа} else b:= NegativElement(a); { Из исходного массива выделяются только негативные элементы} StringGrid2.ColCount:= length(b)+1; for i:= 1 to length(b) do begin StringGrid2.Cells[i,0]:= IntToStr(i); StringGrid2.Cells[i,1]:= IntToStr(b[i-1]); {Элементы массива выводятся в ячейки StringGrid2} end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin n:= CountElement; Edit1.Text:= IntToStr(n); end; end.
РЕЗУЛЬТАТЫ ИСПЫТАНИЙ Приложение Б (обязательное)
Рисунок 1
Рисунок Стандартный 2
Рисунок 3 Разный порядок
|
||||||||||||||||||||||||||
|