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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2011, 00:08   #1
Fufichek
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию двумерный массив

Дамы и Господа,может кто знает в чём ошибка в этой строке?
if c[i,j]<0 then c[i,j]:=s;




unit Unit1;

interface

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

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
Button4: TButton;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
,
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
c:array of array of real;
m:byte;
s:real; i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
F:TextFile;
ST:string;

begin
If OpenDialog1.Execute then
Begin
AssignFile(f,OpenDialog1.FileName);
Reset(F);
Readln(F,m);
StringGrid1.RowCount:=StringGrid1.F ixedRows + m;
StringGrid1.ColCount:=StringGrid1.F ixedCols + m;
For i:=0 to m do
StringGrid1.Cells[0,i]:=IntToStr(i);
For j:=0 to m do
StringGrid1.Cells[j,0]:=IntToStr(j);
For i:=1 to m do
For j:=1 to m do
begin
Readln(F,ST);
StringGrid1.Cells[j,i]:=ST;
end;
CloseFile(f);
end
else
ShowMessage('Файл не был выбран!');

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
S:=0;
m:=StringGrid1.ColCount - 1;
m:=StringGrid1.RowCount - 1;
For i:=1 to m do
For j:=1 to m do

if i=j then
begin
S:=S+StrToFloat(StringGrid1.Cells[j,i]);

end;
Edit1.text:=FloatToStr(S)
end;



procedure TForm1.Button3Click(Sender: TObject);
Var P:real;
begin
P:=1;
m:=StringGrid1.ColCount - 1;
m:=StringGrid1.RowCount - 1;
For i:=1 to m do
For j:=1 to m do
begin
if i=j then
begin
P:=P*StrToFloat(StringGrid1.Cells[j,i]);

end
end;
Edit2.text:=FloatToStr(P)
end;

procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
begin
for i:=0 to m-1 do
for j:=0 to m-1 do
if c[i,j]<0 then c[i,j]:=s;
for i:=0 to m-1 do
for j:=0 to m-1 do
StringGrid2.Cells[i,j]:=FloatToStrF(c[j,i],ffFixed,5,2);

end;
end.
Fufichek вне форума Ответить с цитированием
Старый 12.07.2011, 00:10   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Рассказывайте, каково условие задачи, а также что происходит у вас (какая ошибка).

Последний раз редактировалось Вадим Мошев; 12.07.2011 в 00:10. Причина: ляляляляля
Вадим Мошев вне форума Ответить с цитированием
Старый 12.07.2011, 00:25   #3
Fufichek
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

вот условие:Дан двумерный массив C(M,M):
1. Определить произведение и сумму элементов расположенных на главной диагонали.
2.Заменить все отрицательные элементы исходного массива на полученную сумму.
выдаёт такую ошибку:
For loop control variable must be simple local variable
Fufichek вне форума Ответить с цитированием
Старый 12.07.2011, 00:32   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Ну, прежде всего
Цитата:
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
,
private
Зачем вы тут запятую поставили?

А ещё

Код:
var
Form1: TForm1;
c:array of array of real;
m:byte;
s:real; i,j:integer;
implementation
Вы используете динамические массивы, при этом вы нигде не выделили паять под них

Рекомендую заменить эту строчку на

Код:
c: array[1..100, 1..100] of real;

Последний раз редактировалось Вадим Мошев; 12.07.2011 в 00:38.
Вадим Мошев вне форума Ответить с цитированием
Старый 12.07.2011, 00:38   #5
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

эрэй оф эрэй это в каком-то языке вроде есть. Знакомая конструкция
массив в массиве=двумерный массив. Кэп.
Sna1L вне форума Ответить с цитированием
Старый 12.07.2011, 00:55   #6
Fufichek
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

запятая нечаянно поставлена при копировании
Fufichek вне форума Ответить с цитированием
Старый 12.07.2011, 00:58   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Работает?........
Вадим Мошев вне форума Ответить с цитированием
Старый 12.07.2011, 01:03   #8
Fufichek
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

нет.всё равно ту же самую ошибку выдаёт
Fufichek вне форума Ответить с цитированием
Старый 12.07.2011, 01:08   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Покажите ваш код снова, НО ПЕРЕД ЭТИМ ВОСПОЛЬЗУЙТЕСЬ КНОПОЧКОЙ #. Он заключит ваш код в тэговые скобки [code][/ code]
Вадим Мошев вне форума Ответить с цитированием
Старый 12.07.2011, 01:12   #10
Fufichek
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
Button4: TButton;
StringGrid2: TStringGrid;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
c: array[1..100, 1..100] of real;
m:byte;
s:real; i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
F:TextFile;
ST:string;

begin
If OpenDialog1.Execute then
Begin
AssignFile(f,OpenDialog1.FileName);
Reset(F);
Readln(F,m);
StringGrid1.RowCount:=StringGrid1.F ixedRows + m;
StringGrid1.ColCount:=StringGrid1.F ixedCols + m;
For i:=0 to m do
StringGrid1.Cells[0,i]:=IntToStr(i);
For j:=0 to m do
StringGrid1.Cells[j,0]:=IntToStr(j);
For i:=1 to m do
For j:=1 to m do
begin
Readln(F,ST);
StringGrid1.Cells[j,i]:=ST;
end;
CloseFile(f);
end
else
ShowMessage('Файл не был выбран!');

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
S:=0;
m:=StringGrid1.ColCount - 1;
m:=StringGrid1.RowCount - 1;
For i:=1 to m do
For j:=1 to m do

if i=j then
begin
S:=S+StrToFloat(StringGrid1.Cells[j,i]);

end;
Edit1.text:=FloatToStr(S)
end;



procedure TForm1.Button3Click(Sender: TObject);
Var P:real;
begin
P:=1;
m:=StringGrid1.ColCount - 1;
m:=StringGrid1.RowCount - 1;
For i:=1 to m do
For j:=1 to m do
begin
if i=j then
begin
P:=P*StrToFloat(StringGrid1.Cells[j,i]);

end
end;
Edit2.text:=FloatToStr(P)
end;

procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
begin
for i:=0 to m-1 do
for j:=0 to m-1 do
if c[i,j]<0 then c[i,j]:=s;
for i:=0 to m-1 do
for j:=0 to m-1 do
StringGrid2.Cells[i,j]:=FloatToStrF(c[j,i],ffFixed,5,2);

end;
end.
Fufichek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив LordTor Общие вопросы C/C++ 1 02.06.2011 23:03
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив JokerWCC Помощь студентам 5 10.10.2010 20:10
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
C++. Двумерный массив Manofiron Помощь студентам 1 02.06.2009 20:10