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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 14:39   #1
Женечка92
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 40
По умолчанию Массив

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-600,600]. Удалить из него все элементы, в которых последняя цифра 0. Помогите пожалуйста, посмотрите в чем ошибка. Вроде все сделала, а когда программу запускаю, он иногда правильно, а иногда нет. т.е. удаляет не только элементы, которые на 0 заканчиваются, но и другие некоторые.

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   Const
N=10;
var
  Form1: TForm1;
    //А - исходный массив, В - полученный массив  A,B:array[1..N]of integer;
  i,j:integer;
  str:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Randomize;
  str:='';
  for i:=1 to N do
    begin
      A[i]:=Random(1201)-600;
      str:=str+IntToStr(A[i])+#9;
    end;
  Memo1.Lines.Add(str);
  str:='';
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
   button2.Enabled:=false;
  str:='';
  j:=0;
  for i:=1 to N do
    begin
      if Frac(A[i]/10) <> 0 then //если элемент при делении на 10 имеет дробную часть,
        begin                          //вставляем его в массив В, если нет, пропускаем его          j:=j+1;
          B[j]:=A[i];
          str:=str+IntToStr(B[j])+#9;
        end;
    end;
  Memo1.Lines.Add(str);
  end;
end.

Последний раз редактировалось Stilet; 12.04.2010 в 15:10.
Женечка92 вне форума Ответить с цитированием
Старый 12.04.2010, 15:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы так условие поставил:
Код:
if A[i] mod 10=0 then то элемент на 0 заканчивается
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2010, 15:17   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

как раз так и надо было) все числа, кроме нуля при делении на 10 не будут равны 0
NiCola999 вне форума Ответить с цитированием
Старый 12.04.2010, 15:45   #4
Женечка92
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 40
По умолчанию

А это вместо чего получается вставить надо??
Женечка92 вне форума Ответить с цитированием
Старый 12.04.2010, 15:51   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

вместо:
Код:
 if Frac(A[i]/10) <> 0 then
NiCola999 вне форума Ответить с цитированием
Старый 12.04.2010, 15:57   #6
Женечка92
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 40
По умолчанию

[Warning] Unit1.pas(38): For loop control variable must be simple local variable что значит эта ошибка??? он мне ее на A[i] выводит

[Error] Unit1.pas(40): Undeclared identifier: 'A' ой, вот эта!!! что это значит??? вроде только что все норм было, а теперь ему не нравится

сделала все как вы сказали, остальное оставила как было. вот что получилось:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Const
N=10;
var
  Form1: TForm1;
 A,B:array[1..N]of integer;   //À - èñõîäíûé ìàññèâ,  - ïîëó÷åííûé ìàññèâ
  i,j:integer;
  str:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Randomize;
  str:='';
  for i:=1 to N do
    begin
      A[i]:=Random(1201)-600;
      str:=str+IntToStr(A[i])+#9;
    end;
  Memo1.Lines.Add(str);
  str:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 button2.Enabled:=false;
  str:='';
  j:=0;
  for i:=1 to N do
    begin
      if A[i] mod 10=0 then //òî ýëåìåíò íà 0 çàêàí÷èâàåòñÿ
        begin                          //âñòàâëÿåì åãî â ìàññèâ Â, åñëè íåò, ïðîïóñêàåì åãî          j:=j+1;
          B[j]:=A[i];
          str:=str+IntToStr(B[j])+#9;
        end;
    end;
  Memo1.Lines.Add(str);
  end;

end.
но он теперь массив не заполняет числами по нажатию кнопки... подскажите в чем проблема

Последний раз редактировалось Stilet; 12.04.2010 в 17:03.
Женечка92 вне форума Ответить с цитированием
Старый 12.04.2010, 17:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты в инспекторе обьектов назначила этим кнопкам показанные тобой процедуры? Если нет то назначай с вкладке события на OnClick.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2010, 17:10   #8
Женечка92
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 40
По умолчанию

извините, а не напишите подробнее как это сделать??? я что то не поняла. программа правильно написана???
Женечка92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
массив Настенька..Блонди Помощь студентам 3 12.06.2009 00:01
массив Настенька..Блонди Общие вопросы Delphi 0 11.06.2009 21:00
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06