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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 21:19   #1
Toxi
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 31
По умолчанию задача на одномерный массив (delphi)

помогите разобраться)
задание: заменить последний отрицательный элемент массива на модуль первого элемента массива.
По сути задача решена... но не могу понять почему когда ввожу количество элементов массива допустим 5, он выводит массив из 20 элементов)
буду очень благодарен если получу отредактированный код
Код:
var
  Form1: TForm1;
  a: array[0..19] of integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,n:integer;
begin
//setlength(a,n);
randomize;
//n:=strtoint (edit1.text);
edit2.Text:='';
for i:=0 to 19 do
begin
a[i]:=random (20)-10;
edit2.text:=edit2.Text+'    '+inttostr(a[i]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,n,k,c:integer;
begin
for i:=0 to 19 do
begin
 if a[i]<0 then
 begin
 k:=i;
 end;
 end;
 a[k]:=abs(a[0]);
 edit3.text:='';
 for i:=0 to 19 do
 edit3.text:=edit3.text+'    '+inttostr(a[i]);
 end;


end.
Toxi вне форума Ответить с цитированием
Старый 15.03.2012, 21:20   #2
Toxi
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 31
По умолчанию

кстати не ругайтесь на то что я там закомментировал пару строчек, это я пробовал всяко по-разному решать задачу))
Toxi вне форума Ответить с цитированием
Старый 15.03.2012, 21:28   #3
grom333
Форумчанин
 
Аватар для grom333
 
Регистрация: 21.10.2008
Сообщений: 337
По умолчанию

Цитата:
но не могу понять почему когда ввожу количество элементов массива допустим 5, он выводит массив из 20 элементов)
Потому что у Вас в коде стоит это:
Код:
for i:=0 to 19 do
Я так понял, Вы хотели сделать переменную n, как количество элементов? То тогда нужно сделать так:
Код:
for i:=0 to n-1 do
Лучше быть последним из львов, чем первым среди шакалов.
Мой чат
community on struggle with zoomics

Последний раз редактировалось grom333; 15.03.2012 в 21:31.
grom333 вне форума Ответить с цитированием
Старый 15.03.2012, 21:32   #4
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию

Заменить:

Код:
a: array of integer;
Код:
n:=strtoint (edit1.text);
setlength(a,n);

Код:
for i:=0 to n-1 do

Последний раз редактировалось d3qoot; 15.03.2012 в 21:40.
d3qoot вне форума Ответить с цитированием
Старый 15.03.2012, 21:32   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
но не могу понять почему когда ввожу количество элементов массива допустим 5, он выводит массив из 20 элементов
Конкретнее, куда вводишь? Что то я не заметил, чтобы информация бралась из каких-либо Edit'ов. И потом, у тебя везде
Код:
for i:=0 to 19 do
Вполне нормально, что он выводит все 20 элементов. может не стоило коментировать строчку
Код:
//n:=strtoint (edit1.text);
и циклы описывать вот так
Код:
for i:=0 to n-1 do
[ОФФТОП]фигасебе, как бывает...[/ОФФТОП]
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 15.03.2012, 21:38   #6
Toxi
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 31
По умолчанию

сделал как сказали...
теперь выдает ошибки:
[Error] Unit1.pas(37): Incompatible types
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,n:integer;
begin
setlength(a,n);
randomize;
n:=strtoint (edit1.text);
edit2.Text:='';
for i:=0 to n-1 do
begin
a[i]:=random (20)-10;
edit2.text:=edit2.Text+'    '+inttostr(a[i]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,n,k,c:integer;
begin
for i:=0 to n-1 do
begin
 if a[i]<0 then
 begin
 k:=i;
 end;
 end;
 a[k]:=abs(a[0]);
 edit3.text:='';
 for i:=0 to n-1 do
 edit3.text:=edit3.text+'    '+inttostr(a[i]);
 end;


end.
Toxi вне форума Ответить с цитированием
Старый 15.03.2012, 21:44   #7
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Ты бы хоть строчку выделил, так не угадаешь, где тут 37ая

Скорее всего
Код:
setlength(a,n);
randomize;
n:=strtoint (edit1.text);
Первую и третью местами поменяй
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 15.03.2012, 21:46   #8
d3qoot
Пользователь
 
Регистрация: 08.06.2011
Сообщений: 30
По умолчанию

Куда потерял
Код:
a: array of integer;
d3qoot вне форума Ответить с цитированием
Старый 15.03.2012, 21:48   #9
Toxi
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от d3qoot Посмотреть сообщение
Куда потерял
Код:
a: array of integer;
не потерял а просто не скопировал))

Цитата:
Сообщение от whatever Посмотреть сообщение
Ты бы хоть строчку выделил, так не угадаешь, где тут 37ая

Скорее всего
Код:
setlength(a,n);
randomize;
n:=strtoint (edit1.text);
Первую и третью местами поменяй
да, ругается на setlength...
поменял стрчки местами, не помогло

Последний раз редактировалось Stilet; 18.03.2012 в 21:32.
Toxi вне форума Ответить с цитированием
Старый 15.03.2012, 21:52   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i,n,k,c:integer;b:boolean;
begin
edit3.text:='';b:=true;
for i:=0 to n-1 do begin
 if (a[i]<0) and b then  begin a[i]:=abs(a[0]);b:=false;end;
  edit3.text:=edit3.text+'    '+inttostr(a[i]);
end;
end;
Имхо так надежнее.

Цитата:
поменял стрчки местами, не помогло
Потому что у тебя массив финализированный: a: array[0..19] of integer;
А тебе сказали что нужен динамический в 8 посте.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на одномерный массив (C++) sesame Помощь студентам 1 18.01.2012 14:27
Одномерный массив задача Delphi Начинающий програм Помощь студентам 12 23.12.2011 21:34
Одномерный массив в Delphi (Задача) Kawun Помощь студентам 10 18.06.2011 14:21
Пожалуйста помогите в Delphi задача на одномерный массив Женя V. Помощь студентам 6 15.05.2009 22:56
Задача на одномерный массив AliVe Помощь студентам 1 19.11.2007 21:35