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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2007, 13:30   #1
forumu
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 36
По умолчанию # Delphi - Задача по массивам.

С массивами никогда не работал, поэтому не знаю как решить следующие задачи:

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

2. Вставить значение минимального элемента массива после всех четных элементов.

3. Поменять местами две половины массива, сохраняя их порядок.

Без понятия что вообще делать. Подскажите что делать. В книге прочитал про массивы тока не очень понятно.
forumu вне форума Ответить с цитированием
Старый 02.12.2007, 14:35   #2
dr_Lev
 
Регистрация: 02.12.2007
Сообщений: 7
По умолчанию

Задача 1
Код:
Const
N=10;
var
  Form1: TForm1;
  //А - исходный массив, В - полученный массив
  A,B:array[1..N]of integer;
  i,j:integer;
  str:string;
implementation

{$R *.dfm}
//процедура заполнения массива А случайными числами [-50;50]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Randomize;
  str:='';
  for i:=1 to N do
    begin
      A[i]:=Random(101)-50;
      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;

Последний раз редактировалось dr_Lev; 02.12.2007 в 14:41.
dr_Lev вне форума Ответить с цитированием
Старый 02.12.2007, 15:09   #3
dr_Lev
 
Регистрация: 02.12.2007
Сообщений: 7
По умолчанию

Задача 2
Код:
Const
N=10;
var
  Form1: TForm1;
  A:array[1..N]of integer;
  i:integer;
  str:string;
  min:TPoint;
implementation

{$R *.dfm}
//Заполняем массив А случайными числами [1,20]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Randomize;
  str:='';
  for i:=1 to N do
    begin
      A[i]:=Random(20)+1;
      str:=str+IntToStr(A[i])+#9;
    end;
  Memo1.Lines.Add(str);
  str:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  button2.Enabled:=false;
  str:='';
  min.X:=1;

  for i:=2 to N do              
    if A[min.X]>A[i] then min.X:=i; //находим адрес минимального элемента
  min.Y:=A[min.X];
  //Переставляем минимальный элемент в самый конец
  for i:=min.X+1 to N do
    A[i-1]:=A[i];
  A[N]:=min.Y;
  i:=n-1;
  //переставляем миним. эл. с конца вперед, до тех пор пока не попадется четное
  while (i=1)or( frac(A[i]/2)<>0)do
    begin
      A[i+1]:=A[i];
      A[i]:=min.Y;
      i:=i-1;
    end;
  //выводим результат
  for i:=1 to N do
    str:=str+intToStr(A[i])+#9;
  Memo1.Lines.Add(str);
end;
dr_Lev вне форума Ответить с цитированием
Старый 02.12.2007, 15:17   #4
dr_Lev
 
Регистрация: 02.12.2007
Сообщений: 7
По умолчанию

Задача 3
данный код выполняемом только при четном количестве элементов
Код:
Const
N=10;
var
  Form1: TForm1;
  A:array[1..N]of integer;
  i,j,x:integer;
  str:string;
implementation

{$R *.dfm}
//Заполняем массив А случайными числами [1,20]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Randomize;
  str:='';
  for i:=1 to N do
    begin
      A[i]:=Random(20)+1;
      str:=str+IntToStr(A[i])+#9;
    end;
  Memo1.Lines.Add(str);
  str:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  button2.Enabled:=false;
  str:='';
  //меняемполовины масива местами
  j:=trunc(N/2);
  for i:=1 to j do
    begin
      x:=A[i];
      A[i]:=A[j+i];
      A[j+i]:=x;
    end;
  //выводим результат
  for i:=1 to N do
    str:=str+intToStr(A[i])+#9;
  Memo1.Lines.Add(str);
end;
dr_Lev вне форума Ответить с цитированием
Старый 02.12.2007, 15:26   #5
dr_Lev
 
Регистрация: 02.12.2007
Сообщений: 7
По умолчанию

немогу понять, как в ответ кидать файлы, если очень нужны исходники, кинь мне в личку свой email, перешлю
dr_Lev вне форума Ответить с цитированием
Старый 02.04.2010, 20:37   #6
Namiko
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 2
По умолчанию

подскажите, пожалуйста, какие вы компоненты расположили на форме в первой задаче?? по-мимо Memo и Button
Namiko вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
# Delphi - Задача по массивам. Mysia Помощь студентам 4 05.05.2008 17:39
Задача по массивам grerg Помощь студентам 1 30.10.2007 08:25