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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2014, 14:40   #1
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию сформировать новый массив(помогите найти ошибку)

доброго времени суток,помогите разобраться с пршраммой,ошибку выдает такую "[Error] Unit1.pas(53): Undeclared identifier: 'caption'"
вот код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
M,D:array[1..100] of integer;
i,n,j,k,h:integer;
begin
n:=memo1.Lines.Count;
for i:=1 to n do
M[i]:=strtoint(memo1.Lines[i-1]);
D[i]:=M[i];
k:=n;
i:=1;
Repeat
if D[i]=0 then
begin
for j:=i to k-1 do
D[j]:=D[j+1];
k:=k-1;
i:=i-1;
end;
i:=i+1;
Until i>k;
for i:=1to k do
if D[i]<0 then
D[i]:=sqr(D[i]);
memo2.caption:=inttostr(D);
h:=memo2.Lines.Count;
label1.caption:='kol-vo elementov novogo massiva='+inttostr(h);
end;
end.
заоодно и правильностиь кода посмотрите пожалуйста)

задание:"Ввести однородный массив. Сформировать новый массив,исключив из исходного нулевые элементы.Подсчитать и вывести кол-во элементов нового массива"
shalgan вне форума Ответить с цитированием
Старый 22.03.2014, 16:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
memo2.caption:=inttostr(D);
у мемо2 (скорее всего это экземляр класса TMemo) НЕТ свойства Caption
либо используйте Label2 вместо Memo2 (надо на форму бросить Label и изменть код)
либо перепишите код примерно так:
Код:
memo2.Lines.Append(' переменная D'+IntToStr(i)+' равна ' +inttostr(D[i]));

p.s.
Цитата:
Код:
D[i]:=sqr(D[i]);
а зачем Вы в квадрат возводите значения? Я что-то пропустил?!

Последний раз редактировалось Serge_Bliznykov; 22.03.2014 в 16:37.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2014, 16:41   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
memo2.caption:=inttostr(D);
Нет у Мемо таких свойств.
Пиши
Код:
memo2.Lines.Append(inttostr(D));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2014, 16:44   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Виталий, там всё ещё хуже - D - это массив...

думаю, что автор должен написать что-то вроде:
Код:
for i:=1 to k do
   memo2.Lines.Append(inttostr(D[i]));
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2014, 17:11   #5
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Виталий, там всё ещё хуже - D - это массив...

думаю, что автор должен написать что-то вроде:
Код:
for i:=1 to k do
   memo2.Lines.Append(inttostr(D[i]));
ну вообще чсуть такая, хотел в мемо2 вписать новый массив, без 0 который
shalgan вне форума Ответить с цитированием
Старый 22.03.2014, 17:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от shalgan Посмотреть сообщение
ну вообще чсуть такая, хотел в мемо2 вписать новый массив, без 0 который
ну, так предложенный мною код (который Вы процитировали) именно это и делает!

а ещё у Вас ошибка при заполнении массива D
должно быть так (выделил то, что Вы забыли написать!)
Код:
  n := memo1.Lines.Count;
  for i := 1 to n do begin
    M[i] := strtoint(memo1.Lines[i - 1]);
    D[i] := M[i];
  end;
А на вопрос насчёт возведения в квадрат функцией sqr так ничего и не ответили.


Кроме того, если используется два массива, как в вашем случае, для исключения нулевых не нужно городить никаких вложенных циклов, это делается так:
Код:
var
  M,D:array[1..100] of integer;
  i, n, k: integer;
begin
  n := memo1.Lines.Count;
  for i := 1 to n do
    M[i] := strtoint(memo1.Lines[i - 1]);

  {перенести из M в D все ненулевые}
  k := 0;
  for i := 1 to n do
    if M[i]<>0 then begin
      k := k + 1;
      D[k] := M[i];
    end;

  Memo2.Lines.Clear;
  for i := 1 to k do
    memo2.Lines.Append(inttostr(D[i]));
  label1.caption := 'kol-vo elementov novogo massiva=' + inttostr(k);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2014, 18:21   #7
shalgan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, так предложенный мною код (который Вы процитировали) именно это и делает!

а ещё у Вас ошибка при заполнении массива D
должно быть так (выделил то, что Вы забыли написать!)
Код:
  n := memo1.Lines.Count;
  for i := 1 to n do begin
    M[i] := strtoint(memo1.Lines[i - 1]);
    D[i] := M[i];
  end;
А на вопрос насчёт возведения в квадрат функцией sqr так ничего и не ответили.


Кроме того, если используется два массива, как в вашем случае, для исключения нулевых не нужно городить никаких вложенных циклов, это делается так:
Код:
var
  M,D:array[1..100] of integer;
  i, n, k: integer;
begin
  n := memo1.Lines.Count;
  for i := 1 to n do
    M[i] := strtoint(memo1.Lines[i - 1]);

  {перенести из M в D все ненулевые}
  k := 0;
  for i := 1 to n do
    if M[i]<>0 then begin
      k := k + 1;
      D[k] := M[i];
    end;

  Memo2.Lines.Clear;
  for i := 1 to k do
    memo2.Lines.Append(inttostr(D[i]));
  label1.caption := 'kol-vo elementov novogo massiva=' + inttostr(k);
end;
спасибо большое,очень помогли)
shalgan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать новый массив... Artsiom Помощь студентам 1 25.11.2013 07:28
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
(С/С++) Сформировать новый массив из положительных нечетных элементов заданного массива Р(20) Chak1483 Помощь студентам 2 02.12.2011 12:05
Помогите Найти ошибку.Задача на массив BackSlash Помощь студентам 4 10.01.2010 16:14
из четных чисел исходного массива сформировать новый массив sanya006 Помощь студентам 3 11.11.2009 19:14