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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 18:46   #1
DombagsDelite
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию Deplphi 7. Одномерный массив случайных чисел. StringGrid

Помогите найти ошибки.
Массив случайных чисел(число элементов массива вводиться пользователем ) нужно вывести в первый стринггрид, а затем во второй стринггрид вывести положительные элементы этогоже массива.
Код:
var
  Form1: TForm1;
  a:array[1..100] of integer;
  n:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
for i:=0 to n do
 begin
 a[i]:=random(100) - random(100);
 StringGrid1.Cells[i,0]:=IntToStr(a[i]);
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var b:array[1..100]of integer;
i,j:integer;
begin
j:=0;
for i:=0 to n do
if a[i]>0 then
 begin
 b[j]:=a[i];
 inc(j);
 end;
for i:=0 to j do
StringGrid2.Cells[i,0]:=IntToStr(b[i]);

end;
DombagsDelite вне форума Ответить с цитированием
Старый 21.11.2012, 19:42   #2
Aspirisha
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 20
По умолчанию

Вы пишете не паскале, а не си. У вас
Цитата:
a:array[1..100] of integer;
Так с чего тогда вы просматриваете массив с нулевого элемента?
Цитата:
for i:=0 to n do
if a[i]>0 then
Aspirisha вне форума Ответить с цитированием
Старый 21.11.2012, 20:35   #3
DombagsDelite
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию

{ [1..100] }это вроде диапазон значений массива, но даже если я для i присваиваю единицу, изменений не произошло(....
DombagsDelite вне форума Ответить с цитированием
Старый 21.11.2012, 21:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Упростим?:
Код:
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var k,i:integer;
begin
k:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=k;
StringGrid2.ColCount:=k;
for i:=0 to StringGrid1.ColCount-1 do begin
 k:=random(100) - random(100);
 if k>0 then StringGrid2.Cells[i,0]:=IntToStr(k);
 StringGrid1.Cells[i,0]:=IntToStr(k);
 end;
end;
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 21:44   #5
Aspirisha
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 20
По умолчанию

Это не просто диапазон. Это индексы первого и последнего элементов. А вот в StringGrid если мне не изменяет память нумерация идет с 0. И то же для b и его индекса j. Других ошибок вроде нет. А компилятор ругается или программа падает?
Aspirisha вне форума Ответить с цитированием
Старый 21.11.2012, 23:03   #6
DombagsDelite
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию

Stilet, интересный метод, но преподаватель придрался и хочет чтоб две кнопки было, в добавок чтоб число столбцов в стринггриде было равно кол-ву элементов в конечном массиве и соответственно чтобы пустых ячеек не было, вот и приходиться так расписывать.)
Подправил, процедуру inc раньше поставил, до этого на при нажатии на Button2 прога ошибку выдавала.

Код:
procedure TForm1.Button2Click(Sender: TObject);
var b:array[1..100]of integer;
i,j:integer;
begin
j:=0;
for i:=1 to n do
if a[i]>0 then
 begin
 inc(j);
 b[j]:=a[i];
 end;
for i:=0 to j do
StringGrid2.Cells[i,0]:=IntToStr(b[i]);

end;
Вроде заработала. но токо вот в стригрид2 ячейка [0,0] нулем заполнена и число столбцов не знаю как подсчитать.
DombagsDelite вне форума Ответить с цитированием
Старый 21.11.2012, 23:07   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
StringGrid2.ColCount:=j;
for i:=0 to j do
 StringGrid2.Cells[i,0]:=IntToStr(b[i+1]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 23:32   #8
DombagsDelite
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию

Спасибо, вроде все работает)
DombagsDelite вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод случайных не повторяющихся чисел в Stringgrid Heng Помощь студентам 12 07.10.2012 16:59
Массив случайных чисел Yriy Общие вопросы C/C++ 14 15.02.2012 20:02
массив + генерация случайных чисел be-be Помощь студентам 1 22.10.2011 18:38
Двухмерный массив случайных чисел AxisNet Паскаль, Turbo Pascal, PascalABC.NET 4 16.09.2009 10:01
Дан двумерный массив случайных чисел. Построить одномерный из исходного, выбрав из него все числа кратные ProWinD Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2008 20:12