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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2007, 17:24   #1
Skay
 
Регистрация: 04.04.2007
Сообщений: 4
По умолчанию Delphi, работа с массивом

Дан одномерный массив H(n), заполненными случайными целыми числами от
-F до F . Упорядочить массив по убыванию, удалив нули со сдвигом влево ненулевых элементов. решить необходимо до пятницы. На Delphi)
Заранее благодарю)))
Skay вне форума Ответить с цитированием
Старый 05.04.2007, 14:57   #2
RSLoader
_________
Пользователь
 
Аватар для RSLoader
 
Регистрация: 27.03.2007
Сообщений: 69
По умолчанию

Вот, я здесь всё написал, кроме разве что, фильтров ввода:
Код:
var
  Form1: TForm1;
  n:integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
  //Свойства таблицы
  StringGrid1.RowCount:=1;
  StringGrid1.FixedRows:=0;
  StringGrid1.FixedRows:=0;
  StringGrid1.Options:=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,
                        goRangeSelect,goEditing,goTabs,goAlwaysShowEditor];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  n:=StrToInt(Edit3.Text); //Размер массива
  StringGrid1.ColCount:=n;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  h:array[1..100] of Integer;
  i,k:Integer;
  changed:Boolean;
  buf:Integer;
begin
  k:=0;
  for i:=1 to n do
  begin
    if (StrToInt(StringGrid1.Cells[i-1,0])<StrToInt(Edit1.Text))
    or (StrToInt(StringGrid1.Cells[i-1,0])>StrToInt(Edit2.Text))
    then
    begin
      MessageBox(Handle,PChar('Значение '+IntToStr(i)+'-го элемента массива не входит в диапазон '+Edit1.Text+'..'+Edit2.Text),'Ошибка!',MB_ICONERROR);
      Exit;
    end;
    //Нулевые элементы удаляем
    if StringGrid1.Cells[i-1,0]<>'0' then
    begin
      inc(k);
      h[k]:=StrToInt(StringGrid1.Cells[i-1,0]);
    end;
  end;
  //Сортировка методом обмена
  repeat
    changed:=False;
    for i:=1 to k-1 do
    if h[i]<h[i+1] then
    begin
      buf:=h[i];
      h[i]:=h[i+1];
      h[i+1]:=buf;
      changed:=True;
    end;
  until not changed;
  StringGrid1.ColCount:=k;
  //Вывод отсортированного массива в таблицу
  for i:=1 to k do StringGrid1.Cells[i-1,0]:=IntToStr(h[i]);
end;
RSLoader вне форума Ответить с цитированием
Старый 05.04.2007, 16:50   #3
Skay
 
Регистрация: 04.04.2007
Сообщений: 4
По умолчанию Спасибо

Спасибо тебе огромное! Хорошый ты чел!!)))
Skay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40
Работа с массивом: n на n ! Angst Помощь студентам 1 24.01.2008 22:14
работа с массивом на ассемблере dmk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.12.2007 19:50
Работа с массивом объектов Newnata Паскаль, Turbo Pascal, PascalABC.NET 2 06.12.2007 07:13