Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Вложенные циклы

Читайте также:
  1. Вложенные и множественные кадровые структуры
  2. Вложенные списки
  3. Вложенные списки
  4. Государственный образовательный стандарт. Требования к выпускнику. Основные циклы дисциплин. Виды и формы занятий в ВУЗе.
  5. Дыхательные циклы человека и эманации времени
  6. Задание № 1. Циклы

Цель работы: приобретение навыков построения вложенных циклических алгоритмов и реализация с их помощью управляющих конструкций повторения.

 

Задание:

1. задать массив M*N, ввод которого осуществляется вручную, и найти столбец с наибольшей суммой;

2. задать таблицу M*N, ввод данных в которую осуществляется вручную, найти наибольший элемент и указать его положение.

 

Листинг программы, соответствующей заданию 1:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

Var M, N:integer; Mas: array of array of integer;

procedure Inp_Real1(Var Symb: Char; Str_Ed: string);

{Var Symb - формальный параметр-переменная обеспечит передачу введенного символа из процедуры Inp_Real1 в вызывающую процедуру; Str_Ed - значение строки отображаемой в поле ввода, параметр-значение, при вызове процедуры будет подставлено фактическое имя поля}

begin

case Symb of

'0'..'9':; // допустимые символы

',','.': // введена точка или запятая

begin

if Symb='.' // введена точка

then Symb:=','; // подмена точки запятой

if Pos(',',Str_Ed)<>0 // строка Str_Ed уже содержит запятую

then Symb:=Char(0); // подмена запятой пустым символом

end;

#8:; // <Backspace>

' ':;

else Symb:=Chr(0); // подмена недопустимого символа пустым

end;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Real1(Key, Edit1.Text);

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Real1(Key, Edit2.Text);

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Real1(Key, Edit3.Text);

end;

procedure TForm1.Button1Click(Sender: TObject);

Var Cod, i, j, k, l, i1,j1: Integer; S: String; {i - счётчик числового массива, j - счётчик элементов текстовой строки}

begin

Val (Edit2.Text,M,cod);

Val (Edit3.Text,N,cod);

SetLength (Mas,M);

For i:=0 to M-1 do

SetLength (Mas[i],N);

begin

i:=0; j:=0; //обнуление счётчиков

k:=0; l:=0;

Label4.Caption:=''; //очистка метки вывода

Repeat

inc(j); //увеличивает j на 1, при первом вхождении j=1

S:=''; //очистка вспомогательной строки

While (Edit1.Text[j] <> ' ') and (j <= Length(Edit1.Text)) do

begin

S:= S + Edit1.Text[j];

Inc(j); //j увеличился на 1, переход на новый виток цикла While

end;

k:=i div N;

l:=i mod N;

Val(S, Mas[k,l], Cod);

inc(i);//увеличивает i на 1

Until (i>M*N) or (j> Length(Edit1.Text));

For i1:=0 to M-1 do begin

For j1:=0 to N-1 do begin

Label4.Caption:=Label4.Caption+IntToStr(Mas[i1,j1])+#9

end;

Label4.Caption:=Label4.Caption+#13

end;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

Var Sum, maxSum, maxStb, i, j: integer;

begin

maxSum:=0; maxStb:=0;

For i:=0 to M-1 do begin

maxSum:= maxSum + Mas[i,0];

end;

For j:=0 to N-1 do begin

Sum:=0;

For i:=0 to M-1 do begin

Sum:=Sum + Mas[i,j]

end;

If Sum > maxSum then

begin

MaxSum:=Sum;

maxStb:=j;

end;

end;

Label5.Caption:= IntToStr(j);

end;

end.


Листинг программы, соответствующей заданию 2:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

Edit2: TEdit;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

Button2: TButton;

StringGrid1: TStringGrid;

Button3: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

TMas = array of array of integer;

var

Form1: TForm1;

implementation

{$R *.dfm}

Var M, N: Integer; Mas: TMas;

procedure Inp_Real1(Var Symb: Char; Str_Ed: string);

begin

case Symb of

'0'..'9':; // допустимые символы

#8:; // <Backspace>

else Symb:=Chr(0); // подмена недопустимого символа пустым

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Real1(Key, Edit2.Text);

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Real1(Key, Edit3.Text);

end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

If not (Key in ['0'..'9', '-', #8]) then Key:= #0; // Алфавит целых чисел

end;

 

procedure TForm1.Button1Click(Sender: TObject);

Var Cod: Integer;

begin

if Edit2.Text <> '' // Проверка поля ввода M на пустое значение

then M:=StrToInt(Edit2.Text) // M преобразовано в число

else begin ShowMessage('введите M!');

exit;

end;

if Edit3.Text <> '' // Проверка поля ввода N на пустое значение

then N:=StrToInt(Edit3.Text) // N преобразовано в число

else begin ShowMessage('введите N!');

exit;

end;

Val(Edit2.Text, M, Cod);

Val(Edit3.Text, N, Cod);

if (Cod<>0) then

begin

ShowMessage('Ошибка ввода данных');

exit;

end;

StringGrid1.Rowcount:=N;

StringGrid1.Colcount:=M;

StringGrid1.Visible:=True;

for N:=0 to StringGrid1.Rowcount-1 do

for M:=0 to StringGrid1.Colcount-1 do StringGrid1.Cells[M,N]:='0';

end;

procedure TForm1.Button2Click(Sender: TObject);

Var i, j: Integer;

begin

M:=StringGrid1.Colcount;

N:=StringGrid1.Rowcount;

SetLength(Mas,M); // Значение первого индека массива

for i:=0 to M-1 do SetLength(Mas[i],N); // Значение второго индекса массива

for i:=0 to M-1 do for j:=0 to N-1 do

Mas[i,j]:=StrToInt(StringGrid1.Cells[i,j]); // Копироваие всех ячеек

Label1.Caption:='';

for i:=0 to N-1 do begin

for j:=0 to M-1 do Label1.Caption:=Label1.Caption+inttostr(Mas[j,i])+#9;

Label1.Caption:=Label1.Caption+#13;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

Var i, j, max, strok, stolb: Integer;

begin

strok:=0;

stolb:=0;

max:=Mas[0,0];

for i:=0 to M-1 do

begin

for j:=0 to N-1 do

if Mas[i,j]>=max then

begin

strok:=j;

stolb:=i;

max:=Mas[i,j];

end;

end;

ShowMessage('номер строки: '+IntToStr(strok+1)+','+' номер столбца: '+IntToStr(stolb+1)+','+' значение: '+IntToStr(max));

end;

end.


Дата добавления: 2015-10-02; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Строк повноважень державної кваліфікаційної комісії – до одного року.| Производственные экскурсии

mybiblioteka.su - 2015-2024 год. (0.02 сек.)