Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двумерный массив в delphi 
:(
    Опции темы
sketchh
Дата 11.3.2012, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



Дан двумерный массив размером n*m, заполненный случайными числами из промежутка [-25,25]1) Заменить отрицательный элемент каждого столбца на положительный 2) Поменять местами второй и последний столбцы.
Начало есть
Код


procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
SetLength(a, n,m);
  stringgrid1.RowCount:=n+1;
  stringgrid1.ColCount:=m+1;
for i:=0 to n-1 do
 for i1:=0 to m-1 do
 begin
  randomize;
  a[i,i1]:=RandomRange(-35, 35);
  StringGrid1.Cells[i1+1,i+1]:=IntToStr(a[i,i1]);
end;
end;

PM MAIL   Вверх
Pawl
Дата 11.3.2012, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(sketchh @  11.3.2012,  08:20 Найти цитируемый пост)
Заменить отрицательный элемент каждого столбца на положительный 

На какой положительный? Равный по модулю? Приведу решение для равного по модулю.
Предположим, у Вас есть еще 1 кнопка для выполнения вычислений.
Код

procedure TForm1.Button2Click(Sender: TObject);
var tmp: integer
begin
for i := 1 to n do
    for i1 := 1 to m do
        //замена отриц. на положит.
        if a[i,i1] < 0 then a[i,i1] := abs(a[i,i1];

//поменять местами столбцы
for i := 1 to n do
begin
    tmp := a[i, 2];
    a[i, 2] := a[i, m];
    a[i, m] := tmp;
end;

end;

А дальше - вывод в StringGrid, как у Вас написано в начале.




--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
sketchh
Дата 13.3.2012, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



что то не получилось решить задачу вот исходный код 
Код

var
  Form1: TForm1;
   a:array of array of integer;
   i,i1,n,m,tmp:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
SetLength(a, n,m);
  stringgrid1.RowCount:=n+1;
  stringgrid1.ColCount:=m+1;
for i:=0 to n-1 do
 for i1:=0 to m-1 do
 begin
  randomize;
  a[i,i1]:=RandomRange(-25, 25);
  StringGrid1.Cells[i1+1,i+1]:=IntToStr(a[i,i1]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
for i := 1 to n do
    for i1 := 1 to m do
        //замена отриц. на положит.
        if a[i,i1] < 0 then a[i,i1] := abs(a[i,i1]);
//поменять местами столбцы
for i := 1 to n do
begin
    tmp := a[i, 2];
    a[i, 2] := a[i, m];
    a[i, m] := tmp;
    StringGrid1.Cells[i1+1,i+1]:=IntToStr(a[i,i1]);
end;
end;
end.

PM MAIL   Вверх
ColdSpirit
Дата 14.3.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.12.2010

Репутация: нет
Всего: 2



Сделал работу и не смог сохранить smile заново делать не хочу, но могу экзешник скинуть если надо))

a: array of array of integer;

замени на

a: array [0..50, 0..50] of integer;



И если еще не работает, то

a[i,i1]:=RandomRange(-25, 25);


замени на

a[i,i1]:=Random(25)-Random(25);



Это сообщение отредактировал(а) ColdSpirit - 15.3.2012, 12:17
PM MAIL   Вверх
sketchh
Дата 15.3.2012, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



все заменил все ровно не робит ругается теперь на 13 строчку
PM MAIL   Вверх
ColdSpirit
Дата 15.3.2012, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.12.2010

Репутация: нет
Всего: 2



13 строка не нужна, у тебя массив уже заданного размера - a: array [0..50, 0..50] of integer;
PM MAIL   Вверх
sketchh
Дата 16.3.2012, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



Цитата(ColdSpirit @ 15.3.2012,  16:53)
13 строка не нужна, у тебя массив уже заданного размера - a: array [0..50, 0..50] of integer;

удалил все ровно не работает может скинешь exe файл?
PM MAIL   Вверх
ColdSpirit
Дата 16.3.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.12.2010

Репутация: нет
Всего: 2



Код

var a: array [0..50, 0..50] of integer;
   i,i1,n,m,tmp:integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

n:=strtoint(edit1.text);
m:=strtoint(edit2.text);

stringgrid1.RowCount:=n+1;
stringgrid1.ColCount:=m+1;

for i:=1 to n do    // напутал куда делать +1, а куда нет,
  for i1:=1 to m do // лучше не париться и идти сразу с единицы
  begin
    randomize;
    a[i,i1]:=Random(25)-Random(25);
    StringGrid1.Cells[i1,i]:=IntToStr(a[i,i1]);
  end;

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//-----------замена отриц. на положит.--------
for i := 1 to n do
    for i1 := 1 to m do
    begin
        a[i,i1] := abs(a[i,i1]); // проверка "if a[i,i1] < 0 then" не нужна
        StringGrid1.Cells[i1,i]:=IntToStr(a[i,i1]); // забыл вывести массив на экран
    end;

//-------------поменять местами столбцы--------
for i := 1 to n do
begin
    tmp := a[i, 2];
    a[i, 2] := a[i, m];
    a[i, m] := tmp;

    for i1 := 1 to m do // забыл добавить i1, без нее вывод не будет работать
      StringGrid1.Cells[i1,i]:=IntToStr(a[i,i1]);
end;
end;

end.

Вот рабочий код, ошибки я там указал, приложил 2 файла - скомпилированный этим кодом и мой

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Programs.zip 560,01 Kb
PM MAIL   Вверх
sketchh
Дата 17.3.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



Спасибо огромное!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.