Просьба с помощью к программистам.

Работаем в Delphi7. Дали зачетную работу, в которой 5 из 7 заданий мы не проходили, только на Pascal.
6 из 7 заданий сделал.
Не могу последнее, пол ночи просидел, методом подбора пытался скомпилировать программу. Пол Интернета облазил, но правильно переписать код на Delphi не могу.
Помогите, у кого есть свободное время и желание помочь.
Условие:
Дана матрица размера M × N. Найти минимальный среди максимальных элементов ее столбцов.

Автор поста оценил этот комментарий
кидай код ))
раскрыть ветку (1)
Автор поста оценил этот комментарий
Вот на Паскале. В нем все отлично получается. А идеально точно преобразовать не получается.
program zada4a;
Uses
Crt;
const
m = 5;
n = 5;
Var
mas: array[1..m][1..n] of integer;
mas_mx: array[1..n] of integer;
i, j, k: byte;
min, max: integer;
Begin
randomize;
max := 0;
min := 0;
k := 1;
for i := 1 to m do
for j := 1 to n do
begin
mas[i,j] := random(100) - 57;
write(a[i,j],' ');
if (j mod 5 = 0) then
writeln;
end;
for j := 1 to n do
begin
max := 0;
for i := 1 to m do
if (mas[i,j] > max) then
max := mas[i,j];
mas_mx[k] := max;
k := k + 1;
end;
for k := 1 to n do
if (max_mx[k] < min) then
min := max_mx[k];
writeln('Минимальный элемент ', min);
readln;
End.
показать ответы
Автор поста оценил этот комментарий
var
res: Real;
i, j: integer;
min: Real;
begin
for I := 0 to sgMatrix.colCount - 1 do
for j := 0 to sgMatrix.rowCount - 1 do
sgMatrix.Cells[i, j] := FloatToStr(Random(100));
min := StrToFloat(sgMatrix.Cells[0, 0]);
for I := 0 to sgMatrix.rowCount - 1 do
begin
for j := 0 to sgMatrix.colCount - 1 do
begin
if min > StrToFloat(sgMatrix.Cells[j, i]) then
min := StrToFloat(sgMatrix.Cells[j, i]);
end;
mmoResult.Lines.Add('Минимум строки ' + Floattostr(i) + ' : ' + floattostr(min));
if i + 1 < sgMatrix.rowCount then
min := StrToFloat(sgMatrix.Cells[0, i + 1]);
end;
end;
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо большое)
Автор поста оценил этот комментарий
ты спин эдитами задай сначала размерность, я особо не парился и по умолчанию ничего не задавал, так что по обоим хоть по разу щелки и заполни массив в стринг гриде и будет тебе счастье
раскрыть ветку (1)
Автор поста оценил этот комментарий
Ты тут? Мне снова нужна помощь. Я опять ракую. Помогаю другу и опять засрался на последней задаче. Пытался сделать по подобию своей задачи, но никак.
Там надо вывести ответы не через Сообщение, а в Мемо, т.к. их там несколько (в зависимости от строк). Если есть время, то вот условие:
Дана матрица размера M x N. В каждой строке матрицы найти минимальный элемент
показать ответы
Автор поста оценил этот комментарий
Да не за что, в следующий раз попытайся сам разобраться)
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я не подумал выводить через ShowMessage.
Почти тот же листинг, правда ты использовал Real, а не Integer.
У тебя работает на ура, еще раз спасибо!
Автор поста оценил этот комментарий
var
res: Real;
i, j: integer;
max: array of real;
begin
for I := 0 to sgMatrix.colCount - 1 do
for j := 0 to sgMatrix.rowCount - 1 do
sgMatrix.Cells[i, j] := FloatToStr(Random(100));
SetLength(max, sgMatrix.colCount);
max[0] := StrToFloat(sgMatrix.Cells[0, 0]);
for I := 0 to sgMatrix.colCount - 1 do
begin
for j := 0 to sgMatrix.rowCount - 1 do
begin
if max[i] < StrToFloat(sgMatrix.Cells[i, j]) then
max[i] := StrToFloat(sgMatrix.Cells[i, j])
end;
end;
res := Max[0];
for I := 0 to Length(max) - 1 do
if res > Max[i] then
res := Max[i];
ShowMessage(FloatToStr(res));
end;
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо тебе большое.
sgMatrix.colCount поменял на strngrd1.colCount (версия другая)
и получилось. Осталось комментарий поставить к новому окну.
Очень тебе благодарен.
показать ответы
Автор поста оценил этот комментарий
тут все ошибки исправил

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
m = 5;
n = 5;
Var
mas: array[1..m, 1..n] of integer;
mas_mx: array[1..n] of integer;
i, j, k: byte;
min, max: integer;
begin
randomize;
max := 0;
min := 100;
k := 1;
for i := 1 to m do
begin
for j := 1 to n do
begin
mas[i,j] := random(100);
write(mas[i,j], ' ');
end;
writeln;
end;
for j := 1 to n do
begin
max := 0;
for i := 1 to m do
begin
if (mas[i,j] > max) then
begin
max := mas[i,j];
mas_mx[j] := mas[i,j];
end;
end;
writeln(mas_mx[j]);
end;
for k := 1 to n do
begin
if (mas_mx[k] < min) then min := mas_mx[k];
end;
writeln('Min ', min);
readln;
end.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо, буду анализировать.
показать ответы
Автор поста оценил этот комментарий
mas:array[1..m,0..n] а цикл с 0. Поправь
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо, попробую.
Автор поста оценил этот комментарий
Вот мой кривой листинг.
unit Unit1;

interface

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

type
TForm1 = class(TForm)
btn1: TButton;
Label1: TLabel;
Label2: TLabel;
strngrd1: TStringGrid;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);



private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
const
m = 5; n = 5;
Var i,j,k, max,min:Integer; mas:array[1..m,0..n] of Integer; mas_mx:array[1..n] of Integer;
begin
Randomize;
max:=0;
min:=0;
k:=1;
for i:=0 to m-1 do
for j:=0 to n-1 do
begin
mas[i,j]:=random(50);
Strngrd1.Cells[i,j]:=IntToStr(mas[i,j]);
end;
for i:= 0 to m-1 do
begin
max:=mas[1,j];
for j:=1 to n-1 do
begin
if mas[i,j] > max then
max:= mas[i,j];
if max<min then
min:=max;
end;
Label1.Caption:=('Минимальный элемент='+IntToStr(min));
end;


end;

end.


procedure TForm1.edt1Change(Sender: TObject);
begin
Strngrd1.ColCount := StrToInt(Edit1.Text);
Strngrd1.RowCount := StrToInt(Edit1.Text);
end;
end.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Пошел на репетицию. Вечером зайду, посмотрю, подумаю.
показать ответы
Автор поста оценил этот комментарий
ты спин эдитами задай сначала размерность, я особо не парился и по умолчанию ничего не задавал, так что по обоим хоть по разу щелки и заполни массив в стринг гриде и будет тебе счастье
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я стринг могу заполнить рандомом.
А вот потом произвести поиск и найти минимум не могу. Посмотри на мой листинг выше в комментариях, может поймешь.
показать ответы
Автор поста оценил этот комментарий
Он как раз и написан на delphi. Console application.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Вот мой кривой листинг.
unit Unit1;

interface

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

type
TForm1 = class(TForm)
btn1: TButton;
Label1: TLabel;
Label2: TLabel;
strngrd1: TStringGrid;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);



private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
const
m = 5; n = 5;
Var i,j,k, max,min:Integer; mas:array[1..m,0..n] of Integer; mas_mx:array[1..n] of Integer;
begin
Randomize;
max:=0;
min:=0;
k:=1;
for i:=0 to m-1 do
for j:=0 to n-1 do
begin
mas[i,j]:=random(50);
Strngrd1.Cells[i,j]:=IntToStr(mas[i,j]);
end;
for i:= 0 to m-1 do
begin
max:=mas[1,j];
for j:=1 to n-1 do
begin
if mas[i,j] > max then
max:= mas[i,j];
if max<min then
min:=max;
end;
Label1.Caption:=('Минимальный элемент='+IntToStr(min));
end;


end;

end.


procedure TForm1.edt1Change(Sender: TObject);
begin
Strngrd1.ColCount := StrToInt(Edit1.Text);
Strngrd1.RowCount := StrToInt(Edit1.Text);
end;
end.
показать ответы
Автор поста оценил этот комментарий
https://www.dropbox.com/s/tdil1ffu4xbm5al/Matrix.7z
Держи
раскрыть ветку (1)
Автор поста оценил этот комментарий
Ошибку дает при выполнении.
Не видел ранее подобного кода.
показать ответы
Автор поста оценил этот комментарий
Как-то так
const
M = 5;
N = 5;
MAX_ = 90;
var
a: array [1..M, 1..N] of integer;
i, j: integer;
min, max: integer;
begin
randomize;
min := MAX_+1;
for i:=1 to M do
begin
for j:=1 to N do
begin
a[i][j]:=random(MAX_)+10;
write(a[i,j],' ');
end;
writeln;
end;
for j := 1 to N do
begin
max := a[1,j];
for i:=1 to M do
begin
if(a[i,j]>max) then max := a[i,j] ;
end;
if(max<min) then min := max;
end;
writeln('Min = ',min);
readln;
end.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Хотя твой код сохраню, может его попробую преобразовать.
показать ответы
Автор поста оценил этот комментарий
Как-то так
const
M = 5;
N = 5;
MAX_ = 90;
var
a: array [1..M, 1..N] of integer;
i, j: integer;
min, max: integer;
begin
randomize;
min := MAX_+1;
for i:=1 to M do
begin
for j:=1 to N do
begin
a[i][j]:=random(MAX_)+10;
write(a[i,j],' ');
end;
writeln;
end;
for j := 1 to N do
begin
max := a[1,j];
for i:=1 to M do
begin
if(a[i,j]>max) then max := a[i,j] ;
end;
if(max<min) then min := max;
end;
writeln('Min = ',min);
readln;
end.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Так код, который я кидал - рабочий. Ты написал на Паскале.
А нужно на Delphi
Всякие IntToStr, Edit-ы всякие и т.д.
показать ответы
Автор поста оценил этот комментарий
У меня нет компиляторов дельфи сейчас, яб помог.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо и на этом.
Автор поста оценил этот комментарий
ща сделаю, подожди, там пиздец в коде)
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я не выспался из-за этой задачи сегодня.
показать ответы
Автор поста оценил этот комментарий
в вдруг он не на программиста учится, а этот предмет просто есть в программе? у нас тоже были делфи и паскали, косвенно, мне они нахер не упали, и мозги у меня к этому не предрасположены, и сейчас на работе не нужны и никогда не пригодится (да, я работаю по специальности), почему бы не помочь человеку? зачем выпендриваться типа сам делай? не хочешь помогать, пройди мимо...
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо за поддержку^__^
Автор поста оценил этот комментарий
думай сам, иначе смысла нет.
раскрыть ветку (1)
Автор поста оценил этот комментарий
У меня есть код, я думал, много думал. Мне нужен код, а я разберусь, где накосячил.
Автор поста оценил этот комментарий
Delphi от Паскаля нихера не отличается в рамках твоей задачи.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я тоже могу так сказать. А ты преобразуй код для Delphi, который я скинул выше. Чтобы для кнопки нормальный код был.
показать ответы
Автор поста оценил этот комментарий
да ладно, не оправдывайся, все были студентами, знаем зто это такое. просто самого раньше бесили, когда просишь решение, а тебе подсказки дают... умники хуевы, подсказки эти и у препода спросить можно. а чё скажешь начнётся типа ты нихуя не научишься, зачем такие специалисты и блаблабла. в основном в темах о таких просьбах помогающие выёбываются, что они могут, а просящий помощи - нет.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Могу еще часов 5-10 убить, найду подбором, но сроки поджимают.
показать ответы
Автор поста оценил этот комментарий
Я же писал. Нашел коды на Паскаль и С++. Но точно преобразовать не получается, хоть волосы на жопи рви.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я понимаю процедуру поиска. Не могу написать ее. Ошибки.
Автор поста оценил этот комментарий
госпади, да дайте ему уже готовый скрипт, он же стесняется сказать, что нихера не знает. а то советы пишете, алгоритмы...
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я не совсем бездарь. Но именно подобную задачу не могу. Не понимаю, где ошибки.
Нам просто дали на дом обучение типа.
показать ответы
Автор поста оценил этот комментарий
Имхо, на таком уровне разницы между Паскалем и Дельфи вы чувствовать особо не должны. А так, чего сложного? Пробегаем по каждому столбцу, ищем его максимальный элемент, запоминаем его, можно даже в первую позицию этого столбца, он нам больше не понадобится. Дальше пробегаем по этой строке ищем минимальный элемент.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я понимаю, что надо каждый столбец пробегать. Я понимаю код на Паскале. Не могу написать точно его на Делфи. Ошибки какие-то иногда, либо прога виснет.
показать ответы
Автор поста оценил этот комментарий
Такие задачи с матрицами на delphi легко гуглятся... Или ты сам алгоритм поиска понять не можешь?
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я же писал. Нашел коды на Паскаль и С++. Но точно преобразовать не получается, хоть волосы на жопи рви.
показать ответы