Вообщем ребят переписываю прогу с C++ на Delphi в конце вылезла ошибка перевод типов на сколько понял TextOut(j*30, i*20, st); вот тут Но до этого я выводил этот же массив таким же способом. и компиль не ругался посмотрите вообще верно хоть переписал нет:
C++ консолька:
Код:
#include <iostream .h>
void main(){
cout< <"ALGORITM FLOIDA. NAHOZHDENIE KRATCHAISHEGO RASSTOYANIYA MEZHDU VSEMI VERSHINAMI GRAPHA."<<endl;
//cout<<"source by www.linkfight.ru"<<endl<<endl;
cout<<"vvedite razmernost' massiva: "<<endl;
int n;
cin>>n;
int arr[255][255];
for (int i=1; i< =n; i++){
for (int q=1; q<=n; q++){
cout<<"vvedite element a["<<i<<"]["<<q<<"]: ";
cin>>arr[i][q];
}
}
cout< <endl;
cout<<endl;
cout<<"isxodnaya matricca: "<<endl;
for (i=1; i<=n; i++){
for (int q=1; q<=n; q++){
cout<<arr[i][q]<<" ";
}
cout<<endl;
}
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
cout<<"reshene: "<<endl;
for (int r=1; r<=n; r++){
if(r==n) {
cout <<endl;
cout <<endl;
cout <<"otvet: "<<endl;
}
// øàãè
for (i=1; i<=n; i++){
for (int q=1; q<=n; q++){
if(arr[i][q]==-1 && arr[i][r]!=-1 && arr[r][q]!=-1){
arr[i][q]=arr[i][r]+arr[r][q];
} else if(arr[i][q]>arr[i][r]+arr[r][q]){
arr[i][q]=arr[i][r]+arr[r][q];
}
if(arr[i][q]<0){
cout< <"~ ";
}
else {
cout<<arr[i][q]<<" ";
}
}
cout<<endl;
}
cout<<endl;
cout<<endl;
cout<<endl;
}
}
Delphi ООП:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
XPManifest1: TXPManifest;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
N:Integer;
st:string;
MyArray: array [1..255,1..255] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Enabled:=false;
Button2.Enabled:=True;
Button1.Enabled:=False;
N:=StrToInt(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:Integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
MyArray[i,j] := StrToInt(InputBox('Введите '+IntToStr(I)+' элемент массива.','Строка '+IntToStr(I),''));
end;
with form1.Canvas do begin //вывод матрицы которую ввели для просмотра
for i:=1 to n do begin
for j:=1 to n do begin
str(MyArray[i,j],st);
TextOut(j*30, i*20, st);
end;
Label1.Visible:=True; //текст типа введенная матрица
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AnimateWindow(Handle, 500, AW_HOR_POSITIVE or AW_SLIDE);
end;
procedure TForm1.Button3Click(Sender: TObject); // результат кнопка вывода
var i,j,r:Integer;
begin
for r:=1 to n do
begin
if r=n then Label1.Caption:='Ответ:';
end;
for i:=1 to n do begin
for j:=1 to n do begin
if (MyArray[i,j]=-1) and (MyArray[i,r]<>-1) and (MyArray[i,j]<>-1) then
begin
MyArray[i,j]:=MyArray[i,r]+MyArray[r,j];
end
else
if MyArray[i,j]>MyArray[i,r]+MyArray[r,j] then
begin
MyArray[i,j]:=MyArray[i,j]+MyArray[r,j];
end;
if MyArray[i,j]<0 then ShowMessage('s')
else
begin
str(MyArray[i,j],st);
TextOut(j*30, i*20, st);
end;
end;
end;
end;
end.