Хелпикс

Главная

Контакты

Случайная статья





ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ



 

 

Пензенский государственный университет

Кафедра "Информационно-вычислительные системы"

ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ

Отчет о лабораторной работе №5

по дисциплине «Основы программирования»

 

 

Выполнил: ст-т гр. 19КП1

Тавакалов А.А

Проверил:   доцент каф. ИВС

                                                                                   Хохлов А. Е./ Дрождин В.В

 

 


1 Формулировка задачи

Выяснить, верно ли, что в строке имеются пять идущих подряд букв е. Даны целые числа , каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+, -, +, -, … или -, +, -, +,…), то ответом должна служить сама исходная последовательность. Иначе, получить все отрицательные члены последовательности, сохранив порядок их следования.

 


2 Техническое задание

 

2.1 Требования к программе

 

Программа дать ответ на вопрос в формулировки задачи

 

2.2 Порядок контроля и приёмки

 

3 Описание программы

     Integer-переменная

Var – описание переменных

Begin – начало программы

Then-оператор
      Else – оператор

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 Разный порядок



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.