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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2012, 18:19   #1
MISTER_88
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию Определить номера строк массива

В делфи. Дан двумерный массив размером n*m, заполненный случайными числами из промежутка [-25,25]. Определить номера строк массива, содержащих только положительные элементы.
Сделал 1-ю часть задания, а вот определить номера положит.элементов незнаю как...
MISTER_88 вне форума Ответить с цитированием
Старый 22.03.2012, 18:49   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
function CheckLine(A:mass; i:integer):boolean;
var
  j:integer;
begin
  result:=true;
  for j:=1 to m do //предполагается, что m - глобальная переменная или константа
    if A[i,j]<0 then
      begin
        result:=false;
        break;
      end;
end;
i - номер проверяемой строки, A - массив. Функция возвращает true, если все элементы положительные, если находит отрицательный, то false;
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 22.03.2012, 20:32   #3
MISTER_88
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

whatever, Спасибо за ответ. А можно как нибудь иначе написать код?
например так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,k:integer;
begin
edit3.Text:=' ';
setlength(a,n,m);
k:=0;

for i:=0 to n-1 do
for j:=0 to m-1 do
if a[i,j]>0 then

edit3.text:=inttostr(k);
end;

Последний раз редактировалось ACE Valery; 22.03.2012 в 23:32.
MISTER_88 вне форума Ответить с цитированием
Старый 22.03.2012, 23:09   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от MISTER_88 Посмотреть сообщение
whatever, Спасибо за ответ. А можно как нибудь иначе написать код?
например так:
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,k:integer;
begin
edit3.Text:=' ';
setlength(a,n,m);
k:=0;

for i:=0 to n-1 do
for j:=0 to m-1 do
if a[i,j]>0 then

edit3.text:=inttostr(k);
end;
Это что вообще?
Размерность, значит, задали, значения элементам не присволили, какое-то k... Ты точно "сделал 1-ю часть задания" ? Напиши, что есть, покажу, куда и как воткнуть процедуру.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 23.03.2012, 05:27   #5
MISTER_88
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

whatever, вот первая часть

Код:
var
  Form1: TForm1;
  n,m:integer;
  a:array  of array of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
a:array [0..20,0..20] of integer;
begin
randomize;
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
for i:=0 to n-1 do
for j:=0 to m-1 do
a[i,j]:=random(41)-20;
stringgrid1.RowCount:=n+1;
stringgrid1.colCount:=m+1;
with stringgrid1 do
begin
i:=0;
for j:=1 to rowcount do
cells [i,j]:=inttostr(j);
j:=0;
for i:=1 to colcount do
cells [i,j]:=inttostr(i);
end;
with stringgrid1 do
for I:=1 to n do
for j:=1 to m do
cells [j,i]:=inttostr (a[i-1,j-1]);
end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.03.2012 в 10:19.
MISTER_88 вне форума Ответить с цитированием
Старый 23.03.2012, 08:37   #6
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Ну тогда так:
Код:
var
 Form1: TForm1;
 n,m:integer;
 a:array of array of integer;

 implementation

 {$R *.dfm}
function CheckLine(A:mass; i:integer):boolean;
var
  j:integer;
begin
  result:=true;
  for j:=0 to m-1 do 
    if A[i,j]<0 then
      begin
        result:=false;
        break;
      end;
end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   i,j:integer;
   a:array [0..20,0..20] of integer;
 begin
   randomize;
   n:=strtoint(edit1.text);
   m:=strtoint(edit2.text);
   for i:=0 to n-1 do
     for j:=0 to m-1 do
       a[i,j]:=random(41)-20;
   stringgrid1.RowCount:=n+1;
   stringgrid1.colCount:=m+1;
   with stringgrid1 do
     begin
       i:=0;
       for j:=1 to rowcount do
         cells [i,j]:=inttostr(j);
       j:=0;
       for i:=1 to colcount do
         cells [i,j]:=inttostr(i);
     end;
   with stringgrid1 do
   for I:=1 to n do
     for j:=1 to m do
       cells [j,i]:=inttostr(a[i-1,j-1]);

   edit3.text:='';
   for i:=0 to n-1 do
     if CheckLine(a,i) then
       edit3.text:=edit3.text+' '+inttostr(i)
 end;
Работать будет, но непонятно, зачем ты глобально объявил динамический массив и не пользуешься им.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 23.03.2012, 11:36   #7
MISTER_88
 
Регистрация: 14.02.2012
Сообщений: 7
По умолчанию

whatever, Спасибо! Все работает)
MISTER_88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В заданной строке определить номера позиций с шестнадцатиричными цифрами (С/С++) Ветал_Ракета Помощь студентам 2 30.09.2011 22:37
Дан массив размерности, определить номера строк элементы которых образуют последовательность С++ Lera Помощь студентам 2 18.12.2009 17:17
С++. Определить номера строк матрицы в которых знаки элементов чередуются StudeHt Помощь студентам 6 05.06.2009 01:27
Номера строк для блокнота __@cmd@__ Общие вопросы Delphi 5 01.02.2009 16:36