0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
1

Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший

20.10.2013, 11:21. Показов 3560. Ответов 18
Метки нет (Все метки)

Добрый день,написала программу но эта кнопка работает неправильно, неверно находит строки с положительными элементами, максимум тоже через раз считает:
Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm9.Button2Click(Sender: TObject);
var
max,t,i,j: integer;
begin
Edit3.Text:=' ';
Edit4.Text:=' ';
for i := 0 to n-1 do
begin
t:=0;
if D[i,0]>0 then
begin
max:=D[i,0];
for j:=0 to m-1 do
if (D[i,j]<0)then
t:=1;
for j:=0 to m-1 do
if (D[i,j]>0) and (D[i,j]>max) then
max:=D[i,j];
end;
if t=0 then
Edit3.Text:=Edit3.Text+' '+inttostr(i);
Edit4.Text:=Edit4.Text+' '+inttostr(max);
end;
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2013, 11:21
Ответы с готовыми решениями:

Определить номера строк массива, содержащих только положительные элементы
Добрый вечер,помогите, пожалуйста, исправить ошибку в программе и не знаю как еще условие добавить...

Определить номера строк массива, содержащих только положительные элементы и найти среди них наименьший
дано задание: Дан двумерный массив размером n*m, заполненный случайными числами из заданного...

Определить номера строк, содержащих только положительные элементы
определить номера строк, содержащих только положительные элементы, если их нет-вывести об этом...

Определить номера строк матрицы, содержащих только положительные элементы
определить номера строк, содержащих только положительные элементы, если их нет- вывести об этом...

18
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 11:29 2
Давай определимся:
1. Какой у тебя массив одномерный или многомерный???

Просто вложенный цикл у тебя замудренный, сначала пробегаешься по одномерному, и тут же работаешь с многомерным....
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 11:35  [ТС] 3
У меня многомерный массив

Добавлено через 1 минуту
Просто сначала я похожу по строкам чтоб индекс узнать
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 11:55 4
1. max - это максимальное значение. Присваивай ему изначально супер маленькое значание: -999999, а не первое значение строки, каждый раз при переходе на новую строку.

2. Пробегая по строкам и если в элементе строки имеется отрицательное значение, то просто выходи из текущего цикла по этой строке.(ничего не выводя в Edit)

Думаю это сократит алгоритм.
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 12:05  [ТС] 5
А я ведь не могу знать в какой ячейке будет самое маленькое число, массив рандомно заполняется, поэтому я беру первую ячейку как бы предполагая что оно максимальное и дальше сравниваю остальные элементы
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 12:07 6
пришли процедурку в которой у тебя происходит генерация массива, я пришлю свой вариант кнопочки
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 12:14  [ТС] 7
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm9.Button1Click(Sender: TObject);
var
i,j,n,m: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
begin
D[i,j]:= Round(Sin(Random(100))*100);
end;
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(D[i-1,j-1]);
end;
Добавлено через 1 минуту
сам массив, n и m глобальные переменные
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 12:35 8
Как то так, только генерируется массив всегда с отрицательным элементом , попробуй протестировать, если что поправлю:

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,m,n,max,flag:Integer;
begin
n:=10 ;
m:=10;

for i:=0 to n-1 do
begin
max:=-999999999;//наименьшее число
flag:=0;//флаг положительности элементов в строке
for j:=0 to m-1 do
begin

if ((D[i,j]>max) and (D[i,j]>0))then max := D[i,j]; // Если больше 0 и больше наименьшего нашего числа

if (D[i,j]) <0 then begin flag:=1;Break;end; //если в строке обнаружился отрицательный элемент выходим и флаг ставим 1

end;
//Если отрицательных элементов нет, выводим результат
if (flag=0) then Memo1.Lines.Add('Строка без отрицательных элементов: '+ inttostr(i)+ ' Максимальный элемент: '+inttostr(max));

end;
end;

Добавлено через 3 минуты
принудительно сделал положительный массив и вставил отрицательные элементы, вроде работает:

D[i,j]:= Random(100);
D[0,0]:=-10;
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 12:46  [ТС] 9
индексы считает теперь верно.но с максимумом что то не так, я так понимаю что максимум нужно найти в той строке где все элементы положительные,но так не получалось поэтому я в каждой строке выводила максимум
Миниатюры
Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший  
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 12:49 10
теперь все верно??? У меня не должно выводиться максимум в строке с отрицательным значением хотя бы одного элемента
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 12:53  [ТС] 11
вот я скрин сделала ,0 строка отрицательная но тут выводит максимум , а во второй строке непонятно что выводит
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 13:04 12
что то вы не так выводите, у меня вроде все верно, но может я не верно понял суть задания....
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 13:05  [ТС] 13
Я оставлю так,пусть тогда во всех считает строках, не получается чтоб отрицательные не считал,спасибо)
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 13:08 14
Да нет не должен считать в отрицательных, у меня же в цикле стоит, что при нахождении отрицательно значения происходит выход из цикла. Как тут скриншот вставить ??? Покажу как у меня отработал цикл с вашим набором значений
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 13:09  [ТС] 15
на панели инструментов скрепка
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 13:10 16
...
Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 13:16  [ТС] 17
У меня вот в таком виде записан,в принципе все как и у вас я только не в мемо, а в едит вывожу и все
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm9.Button2Click(Sender: TObject);
var
max,flag,i,j: integer;
begin
Edit3.Text:=' ';
Edit4.Text:=' ';
n:=strtoint(edit1.Text);
m:=strtoint(edit2.Text);
for i:=0 to n-1 do
begin
max:=-999999999;
flag:=0;
for j:=0 to m-1 do
begin
if ((D[i,j]>max) and (D[i,j]>0))
then max := D[i,j]; 
if (D[i,j]) <0 then
begin
flag:=1;Break;
end; 
end;
if (flag=0) then
Edit3.Text:=Edit3.Text+' '+inttostr(i);
Edit4.Text:=Edit4.Text+' '+inttostr(max);
end;
end;
Добавлено через 1 минуту
Да, у вас верно считает
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 22
20.10.2013, 13:20 18
Delphi
1
2
3
4
5
if (flag=0) then
begin
Edit3.Text:=Edit3.Text+' '+inttostr(i);
Edit4.Text:=Edit4.Text+' '+inttostr(max);
end;

Не обернули, поэтому Edit4.Text:=Edit4.Text+' '+inttostr(max); выполняется всегда , а не по условию
0
0 / 0 / 1
Регистрация: 07.01.2013
Сообщений: 57
20.10.2013, 13:23  [ТС] 19
все теперь не считает отрицательные,спасибо огромное вам
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2013, 13:23
Помогаю со студенческими работами здесь

Определить номера строк двумерной матрицы, содержащих только положительные элементы
Вроде как все сделал но работает не правильно. Вот код: procedure TForm1.Button1Click(Sender:...

В двумерном массиве определить номера строк, содержащих только положительные элементы
№2 В двумерном массиве определить номера строк, содержащих только положительные элементы....

Массив размером m*n. Заполнить его с клавиатуры. Определить номера строк, содержащих только положительные элементы
Дан двумерный массив размером m*n. Заполнить его с клавиатуры. Определить номера строк, содержащих...

В матрице найти номера строк, содержащих только нулевые элементы, и номера строк, содержащих только чётные элементы,
Задана целочисленная матрица А размерности N x N. Найти номера строк, которые имеют: а) все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru