Консультация № 200423
16.03.2021, 09:08
0.00 руб.
0 6 1
Уважаемые эксперты! Пожалуйста, нужна помощь в решении задачи на Delphi.

Разработать программу по работе с массивами согласно условию:
Запросить размерность одномерного массива. Заполнить его случайными числами от -10 до 30. Удалить из массива:
Все отрицательные элементы; Выводить все промежуточные значения; Заполнять случайными числами.

Обсуждение

давно
Профессор
401888
1232
16.03.2021, 09:53
общий
Адресаты:
Укажите IDE:
Delphi(консольное или оконное приложение), Lazarus(консольное или оконное приложение), Паскаль(Турбо, Free, ABC, ABC.net)
давно
Посетитель
404480
8
16.03.2021, 12:32
общий
Адресаты:
Delphi, оконное приложение
давно
Профессор
401888
1232
16.03.2021, 14:01
общий
это ответ
Здравствуйте, Edison!
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a:array of integer;
n,i,k:integer;
begin
if not TryStrToInt(Edit1.Text,n)or(n<1)then
begin
ShowMessage('Неверно введен размер массива');
Edit1.Clear;
Edit1.SetFocus;
exit;
end;
Label3.Caption:='';
setlength(a,n);
for i:=0 to n-1 do
begin
a[i]:=-10+random(41);
Label3.Caption:=Label3.Caption+' '+inttostr(a[i]) ;
end;
i:=n-1;
k:=-1;
for i:=0 to i do
if a[i]>=0 then
begin
inc(k);
a[k]:=a[i];
end;
Label5.Caption:='';
if k=n-1 then label5.Caption:='В массиве нет отрицательных элементов'
else if k=-1 then label5.Caption:='Все элементы удалены'
else
for i:=0 to k do
Label5.Caption:=Label5.Caption+' '+inttostr(a[i]) ;
end;

Предлагаемый вид формы.
Прикрепленные файлы:
1fe974ca104facf54526c1abbfac33a26014d4f9.jpg
5
Спасибо
давно
Посетитель
404480
8
16.03.2021, 16:36
общий
Адресаты:
А вы можете, пожалуйста, сделать так, чтобы массив выводился не в Label, а в StringGrid?
давно
Профессор
401888
1232
16.03.2021, 17:05
общий
Адресаты:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a:array of integer;
n,i,k:integer;
begin
if not TryStrToInt(Edit1.Text,n)or(n<1)then
begin
ShowMessage('Неверно введен размер массива');
Edit1.Clear;
Edit1.SetFocus;
exit;
end;
setlength(a,n);
with StringGrid1 do
begin
fixedrows:=0;
rowcount:=1;
fixedcols:=0;
colcount:=n;
defaultcolwidth:=30;
for i:=0 to n-1 do
begin
a[i]:=-10+random(41);
cells[i,0]:=inttostr(a[i]) ;
end;
end;
i:=n-1;
k:=-1;
for i:=0 to i do
if a[i]>=0 then
begin
inc(k);
a[k]:=a[i];
end;
if k=n-1 then ShowMessage('В массиве нет отрицательных элементов')
else if k=-1 then ShowMessage('Все элементы удалены')
else
with StringGrid2 do
begin
fixedrows:=0;
rowcount:=1;
fixedcols:=0;
colcount:=k+1;
defaultcolwidth:=30;
for i:=0 to k do
cells[i,0]:=inttostr(a[i]) ;
end;
end;

Предлагаемый вид формы.
Прикрепленные файлы:
0db262a3ee1e05579276c79e1a82866c.jpg
давно
Посетитель
404480
8
17.03.2021, 00:45
общий
Адресаты:
Спасибо
Форма ответа