Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 19:08   #1
Makspane
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 18
По умолчанию номера столбцов, где найдлинее цепь одинаковых елементов

условие программы, дана матрицая, найти+=количество рядков, где хотяб один нулевый елемент, 2) номера столпцов, в которых находится найдлинее цепь одинаковых елементов..

я написал прогу, но она выводит только одну первую попавшеюся найдлиншую цепь, а есле еще есть такая же по длине, он ее уже не учитывае, А НАДО ЧТОБ ЕЕ ТОЖ УЧИТЫВАЛ.... помогите..
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
ListBox1: TListBox;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
n,m,i,j,kol,flag,max,num:integer;
mass:array [1..100,1..100] of integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
listbox1.Clear;
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
stringgrid1.ColCount:=m;
stringgrid1.RowCount:=n;

for i:=1 to n do
for j:=1 to m do
begin
mass[i,j]:=random(11)-5;
stringgrid1.Cells[j-1,i-1]:=inttostr(mass[i,j]);
end;
flag := 0;
kol:=0;
for i:=1 to n do
begin
for j:=1 to m do
if mass[i,j]=0 then flag := 1;
if flag = 1 then
kol:=kol+1;
flag :=0;
end;

label3.Caption:='Количество строк, которые содержат нуливой элемент = ' + inttostr(kol);

kol:=0;
max:=0;
num:=0;



for i:=1 to m do
begin
kol:=1;
for j:=1 to n-1 do
if mass[j,i] = mass[j+1,i] then
begin
kol:=kol+1;
if max<kol then
begin
max:=kol;
num:=i;
end;
end
end;

label4.Caption:='NOMER = ' + inttostr(num);
label5.Caption:= 'kolvo = ' +inttostr(max);
end;

end.
Makspane вне форума Ответить с цитированием
Старый 10.05.2012, 02:26   #2
Malgor
Пользователь
 
Регистрация: 04.04.2012
Сообщений: 22
По умолчанию

думаю если num сделать текстовой (или другую переменную ввести) то это будет выглядеть так

Код:
for i:=1 to m do
begin
kol:=1;
for j:=1 to n-1 do
if mass[j,i] = mass[j+1,i] then
begin
kol:=kol+1;
if max<kol then
begin
max:=kol;
if num<>'' then
num:=inttistr(i)
else
num:=num+', '+inttistr(i)
end;
end
end;

label4.Caption:='NOMER = ' + num;
label5.Caption:= 'kolvo = ' +inttostr(max);
end;
как-то так.
Malgor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести номера тех столбцов, сумма элементов которых меньше нуля, и число таких столбцов Half Помощь студентам 7 16.04.2012 21:23
как найти два одинаковых номера в столбце? pilzZ Помощь студентам 2 21.01.2012 17:53
Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номе Alexar Makken Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 22:07
Не знаю как подсчитать суму елементов столбцов и вывести список команд по возростанию! Fernir Помощь студентам 0 10.06.2010 17:51
Для матрицы F(m, n), 1<(m, n)<10, напечатать номера столбцов с количеством нулей больше 1. Igoreha010 Помощь студентам 7 12.02.2010 19:28