Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление строки из двумерного массива, НЕ пойму, помогите, поправьте мой код по 
V
    Опции темы
ErioL
  Дата 10.10.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



В двемерном массиве удалить строку.
Я понимаю, что строка как таковая не удаляется, а затирается, но запутался.
Код

uses crt;
const n=5;m=5;
type myarray=array[1..n,1..m] of integer;
function enter(var a:myarray):real;
var i,j:integer;
 begin
     randomize;
 for i:=1 to 5 do begin
  for j:=1 to 5 do begin
   a[i,j]:= random(16);
   write(a[i,j],'  ');
   end;
   writeln;
   end;
   readln;
   end;
procedure  delete;
var i,j:integer;
var a:myarray;k1:integer;
begin
   writeln;
   Writeln('vvedite K');
   readln(k1);
   for i:=k1 to n-1 do begin
    for j:=1 to m do     begin
    a[i,j]:=a[i+1,j];
     a[n,m]:=0;
     end;
          writeln(a[n,m], ' ');

end;
 readln;
end;
var h:myarray;
begin clrscr;
enter(h);
delete;
end. 
smile 

Пользуемся тегами...

Это сообщение отредактировал(а) volvo877 - 10.10.2007, 17:25
PM MAIL ICQ   Вверх
volvo877
Дата 10.10.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Код

uses crt;
const
  n = 5;
  m = 5;
type
  myarray=array[1..n,1..m] of integer;

var
  rows, cols: integer; { <--- вообще-то глобальные переменные - зло... }

procedure print(const a: myarray);
var
  i, j: integer;
begin
  for i := 1 to rows do begin
    for j := 1 to cols do
      write(a[i, j]:5);
    writeln;
  end;
  readln;
end;

procedure enter(var a: myarray);
var
  i, j: integer;
begin
  randomize;
  for i:=1 to rows do
    for j:=1 to cols do
      a[i,j]:= random(16);
end;

procedure delete(var a: myarray);
var
  i, j, k: integer;
begin
  writeln;
  Writeln('vvedite K');
  readln(k);

  for j := 1 to cols do begin { сдвигпем все строки от k-ой на одну вверх }
    for i := k to rows - 1 do
      a[i, j] := a[i + 1, j];
  end;
  dec(rows); { <--- уменьшаем число строк }
end;

var h:myarray;
begin
  rows := n; cols := m;

  clrscr;
  enter(h);
  print(h);

  delete(h);
  print(h);
end.

PM MAIL   Вверх
ErioL
Дата 11.10.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Спасибо, мне глазы енто открыло)))))
Теперь все понятно, а то мудохалси сидел  {я дядько начинающий}

Добавлено через 8 минут и 35 секунд
Мммм......... А исчо один вопрос мона?
Я понятия не имею как сделать так чтоб ,к примеру , из какой-либо строки удалить несколько элементов?

PM MAIL ICQ   Вверх
volvo877
Дата 11.10.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(ErioL @  11.10.2007,  11:40 Найти цитируемый пост)
из какой-либо строки удалить несколько элементов?

А с остальными что делать? Сдвигать на место удаленных и "хвосты" заполнять нулями?
PM MAIL   Вверх
ErioL
Дата 11.10.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Да так, виноват.

Добавлено через 1 минуту и 9 секунд
Где надо обнулить элементы?

PM MAIL ICQ   Вверх
volvo877
Дата 11.10.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Если у тебя описана матрица:

Код
var
  arr: array[1 .. n, 1 .. n] of integer;


и тебе надо в ней удалить из строки K один элемент с индексом Del, а остальные сдвинуть вперед и освободившийся элемент заполнить нулем, то:

Код
  k := 3; del := 3; { Допустим, удаляем в 3-ей строке элемент №3 }
  for i := Del to n - 1 do
    arr[k, i] := arr[k, i + 1]; { <--- сдвигаем все влево }
  arr[k, n] := 0; { <--- Записываем в последний элемент строки ноль }

PM MAIL   Вверх
ErioL
Дата 14.10.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Спасибо)))

PM MAIL ICQ   Вверх
ErioL
Дата 14.10.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Преподавателю вдруг залупилось, он просит сделать так чтоб  удалить две и более строк, при ентом, я должен ввести А- с какой удалять и Б-по какую.
PM MAIL ICQ   Вверх
volvo877
Дата 14.10.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Ну, сделай удаление в цикле по одной строке... Чего огород-то городить...
PM MAIL   Вверх
ErioL
Дата 14.10.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Гыыыыы, ужо сам все сделал)))

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0798 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.