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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2010, 17:23   #1
Jack125
Пользователь
 
Регистрация: 16.10.2010
Сообщений: 24
По умолчанию Задача на массив

Добрый день. Возникла небольшая проблема с задачей:

Дан одномерный массив размера n. Скопировать значения полей массива в другой массив с таким же размером.

Сам код я сделал, исходный массив заполняю случайными числами. Есть 2 кнопки: первая - генерация случайных чисел (от 1 до 20), вторая - копирование значений первого массива во второй. Проблема в том, что после запуска программы во второй массив заполняют не заданные в первом массиве числа, а одно и то же число, равное последнему элементу первого массива, и я никак не могу найти ошибку. Вот полный код программы:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:array[1..20]of integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,ch:integer;
begin
for ch:=1 to 9 do
begin
StringGrid1.Cells[ch-1,0]:=IntToStr(random(21));
for i:=1 to 9 do
a[i-1]:=StrToInt(StringGrid1.Cells[ch-1,0]);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var n,i,num:integer;
begin
n:=9;
num:=0;
for i:=1 to n do
begin
StringGrid2.Cells[num,0]:=IntToStr(a[i-1]);
num:=num+1;
end;
end;

end.
где n - размер первого массива
num - номер столбца второго массива
ch - счетчик для заполнения случ. числами первого массива

В чем здесь может заключаться моя ошибка?

Последний раз редактировалось Jack125; 13.11.2010 в 17:31.
Jack125 вне форума Ответить с цитированием
Старый 13.11.2010, 18:23   #2
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Не поняла... Тебе просто-напросто скопировать значения из первого массива во второй? И, видимо, массив одномерный. Если так, то...
Код:
procedure TForm1.Button1Click(Sender: TObject);    // заполнение 1 массива
var i: integer;
begin
  StringGrid1.ColCount := StrToInt(Edit1.Text);    // делаем в 1 массиве сколько_нужно столбцов
  for i := 0 to n - 1 do
    StringGrid1.Cells[i,0] := random(21);   // заполняем случайными числами
end;

procedure TForm1.Button2Click(Sender: TObject);    // копирование во 2 массив
var i: integer;
begin
  StringGrid2.ColCount := StringGrid1. ColCount;    // уравниваем размеры массивов, во избежание ошибков
  for i := 0 to StringGrid2.ColCount - 1 do
    StringGrid2.Cells[i,0] := StringGrid1.Cells[i,0];   // просто копируем
end;

Последний раз редактировалось Риндера; 13.11.2010 в 18:27.
Риндера вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на массив AnoKaJIunCuC Помощь студентам 1 14.10.2010 20:01
Задача на массив. spankyham Помощь студентам 6 15.04.2009 16:41
Задача на массив KARUSHEV Помощь студентам 1 02.04.2009 09:42
задача на массив Яша Помощь студентам 3 31.03.2009 14:39
Задача на массив. aleksandr_dss Помощь студентам 1 12.01.2009 11:54