Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2012, 16:05
Izekil Izekil вне форума
Прохожий
 
Регистрация: 17.12.2012
Сообщения: 1
Репутация: 10
По умолчанию Одномерные массивы

Помогите пожалуйста с данной задачкой:
Одномерный массив а длиной М. Переместить нулевые элементы массива в конец, сдвинув остальные элементы влево.
Приведу то, что я сделал на данный момент:
настроил 2 стрингрида и
Код:
var
k:integer;
a:array[1..30] of integer;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
k:=strtoint(edit1.Text);
if (k>0) and (k<=30) then
s1.ColCount:=k
else
ShowMessage('Введи размер массива >0 и <=30 ')

end;

procedure TForm1.Button3Click(Sender: TObject);
var
i,j,n:integer;
begin
for i:=1 to k do
a[i]:=strtoint(S1.Cells[i-1,0]);

end;
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 17.12.2012 в 16:07.
Ответить с цитированием
  #2  
Старый 18.12.2012, 21:52
Аватар для DelphiM0ZG
DelphiM0ZG DelphiM0ZG вне форума
Новичок
 
Регистрация: 22.10.2011
Сообщения: 62
Репутация: 666
По умолчанию

Решил Вашу задачу 2-мя способами, но в консоли (я надеюсь, что не составит труда вывести массив в StringGrid, а не в консоль). И ещё кое что: приучайтесь сразу нумеровать элементы массива с нуля, поскольку в Си-подобных языках нумерация элементов с нуля.

Код:
program Forum2Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Var  // основной и дополнительный массивы
  Mas, Mass: Array[0..29] Of Integer;
  i, k, N: Byte; // переменные

begin
  Repeat
    Write('Vvedi razmer (2 <= N <= 30): N = ');
    ReadLn(N);  // ввод размера
  Until ((N >= 2) And (N <= 30)); // проверка границ размера

  N:=N-1;
  Randomize; // инициализация генератора СЧ
  WriteLn('Ishodnii massiv:');
  For i:=0 To N Do
    Begin // генерация элементов массива и вывод на экран
      Mas[i]:=Random(5);
      WriteLn(Mas[i]); // так вывод производится в столбик
     // Write(Mas[i], ';  '); а так - в строчку
    End;

  WriteLn;
  WriteLn('Poluchennii massiv:');
  WriteLn;

  // этот закоментированный код тоже работает
  // этот код использует дополнительный массив
  {k:=0; // начальное значение количества ненулевых элементов
  For i:=0 To N Do
    If (Mas[i]<>0) Then // если элемент ненулевой
      Begin
        Mass[k]:=Mas[i]; // он попадает в массив
        k:=k+1; // индекс массива ненулевых элементов +1
      End;

  For i:=0 To N Do
    Begin // если i меньше кол-ва ненулевых эл-тов
      If (i<k) Then
        Mas[i]:=Mass[i]  // беру элемент из массива
      Else  // иначе, присваиваю ему нуль
        Mas[i]:=0;
      WriteLn(Mas[i]); // вывод на экран
    End;}

  // этот код не использует дополнительный массив
  For i:=0 To N-1 Do // мотаю цикл от 0 до кол-ва эл-тов массива -1
    For k:=i+1 To N Do // мотаю цикл, который перемещает эл-ты
      If ((Mas[i]=0) And (Mas[k]<>0)) Then
        Begin // если левый элемент нуль, а правый нет, то:
          Mas[i]:=Mas[k]; // левому присвоил значение правого
          Mas[k]:=0; // а правому нуль
        End;

  // для закомментированного метода этот цикл НЕ нужен!
  For i:=0 To N Do // просто вывод массива на экран
    WriteLn(Mas[i]);

  WriteLn;
  WriteLn('Press ENTER!');
  ReadLn;
end.

З. Ы. Ннаписал в консоли, т. к. рисовать форму мне было неохота!
__________________
Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!..
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025