IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> удаление строк у массиве, в Паскале я новичок, если можно помогите
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Дан двухмерный массив. Удалить из него две строки, одна из которых расположена
перед s-й строкой, а вторая перед p-й. Вобшем я создал массив, а дальше не знаю,
если можно допишите вот текст
Код
program a1;
    uses crt;
   const n=10;
  var a:array[1..n,1..n] of integer;
  i,j: integer;
begin
clrscr;
  randomize;
  begin
  for i:=1 to n do
  begin
  for j:=1 to n do
  begin
a[i,j]:=random(99)-1;
write(a[i,j]:7);
end;
writeln
end;
readln
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Alex

Репутация: -  0  +


Как именно удалить?
1.Можно просто при следующем выводе массива не показывать эти две строки.
2.Забить нулями и оставить висеть на своих местах
2.1.Забить нулями и не учитывать при выводе.
3.Здвинуть строки в конец массива и при выводе не учитывать.

Первый вариант самый простой, но дуаю самый тупой...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Цитата(Rusted-Razor @ 28.05.2007 8:27) *

Как именно удалить?
1.Можно просто при следующем выводе массива не показывать эти две строки.
2.Забить нулями и оставить висеть на своих местах
2.1.Забить нулями и не учитывать при выводе.
3.Здвинуть строки в конец массива и при выводе не учитывать.

Первый вариант самый простой, но дуаю самый тупой...

Должно получатся вот так
1 2 3 4 5 6
2 2 3 4 2 6
8 6 4 2 7 4 - это массив который появляется сначала, я ввожу номера строк которые я хочу удалить
3 9 3 8 3 3
5 7 4 8 6 8


и это будет вот так
1 2 3 4 5 6
8 6 4 2 7 4 - я удалил вторую и пятою строки
3 9 3 8 3 3
но я не знаю как ето переделать, вот могу дать еще исходник полной проги если её будед легче переделать
но здесь есть Label которые мы не учили нужно будет от них избавится. Нужно переделать так чтобы она была
без Label. Помогите с прогою очень нада.
program ex1066;
uses crt;
label RepeatInput;
const lenRows=6;
lenColumns=4;
d1=-10; d2=10;
var r,c : byte;
i,p : byte;
m : array [1..lenRows,1..lenColumns] of integer;
mres : array [1..lenRows-2,1..lenColumns] of integer;
begin
randomize;
for r:=1 to lenRows do
for c:=1 to lenColumns do
m[r,c]:=random(d2-d1+1)+d1;
clrscr;

writeln('Матриця');
for r:=1 to lenRows do
begin
for c:=1 to lenColumns do
write(M[r,c]:8);
writeln;
end;
RepeatInput:
writeln('програма знищує i-й та p-й рядок i<p : ');
write('введiть номер рядка i: ');readln(i);
write('введiть номер рядка p: ');readln(p);
if (i>lenrows) or (p>lenrows) or (i>=p) then goto RepeatInput;


for r:=1 to i-1 do
for c:=1 to lencolumns do
mres[r,c]:=m[r,c];

for r:=i+1 to p-1 do
for c:=1 to lencolumns do
mres[r-1,c]:=m[r,c];

for r:=p+1 to lenrows do
for c:=1 to lencolumns do
mres[r-2,c]:=m[r,c];

writeln('Матриця');
for r:=1 to lenRows-2 do
begin
for c:=1 to lenColumns do
write(MRes[r,c]:8);
writeln;
end;

readkey
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Должно получатся вот так
Как должно получаться - понятно... Ты скажи, как реализовать то, что в принципе реализовать нельзя? Массив описан НЕ динамический, удалить из него что-то просто невозможно. Тебе уже дали несколько вариантов, дающих ПОДОБНЫЙ удалению эффект, спросили, какой тебя устраивает - ты почему-то решил НЕ отвечать?

Что ты хочешь, чтобы решили за тебя, а потом ты скажешь, что это было неверно? Скажи, какой вариант из предложенных выше тебя устраивает (не надо никогда ничего перекладывать с большой головы на здоровую - это ТВОЕ задание, тебе и принимать решение!)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Цитата(Rusted-Razor @ 28.05.2007 8:27) *

Как именно удалить?
1.Можно просто при следующем выводе массива не показывать эти две строки.
2.Забить нулями и оставить висеть на своих местах
2.1.Забить нулями и не учитывать при выводе.
3.Здвинуть строки в конец массива и при выводе не учитывать.

Первый вариант самый простой, но дуаю самый тупой...

Тогда я думаю что лучше будет первый вариант
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Alex

Репутация: -  0  +


И ещеодн:
В задании писано:" Удалить из него две строки, одна из которых расположена
перед s-й строкой, а вторая перед p-й. "
Перед первой строкой ничего неи! Я думаю будет логично в таком случае удалить первую строку,
хотя можно запретить вводить в качестве удаляемой строки первую.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Alex

Репутация: -  0  +


Вот прога, вроде рабочая.
Еденицу вводить нельзя...

uses crt;

const lenRows=6;
lenColumns=4;
d1=-10;
d2=10;
var r,c : byte;
i,p : byte;
m : array [1..lenRows, 1..lenColumns] of integer;
begin
randomize;
for r:=1 to lenRows do
for c:=1 to lenColumns do
m[r,c]:=random(d2-d1+1)+d1;
clrscr;

writeln('Матриця');
for r:=1 to lenRows do
begin
for c:=1 to lenColumns do
write(M[r,c]:8);
writeln;
end;

Repeat
writeln('программа удалит строку перед "I" и "P" i<p : ');
write('введите номер строки i: '); readln(i);
write('введите номер строки p: '); readln(p);
Until (i<=lenrows) and (p<=lenrows) and (i<=p) and (i<>1) and (p<>1);


writeln('Матриця');
For r:=1 to lenRows do
If (r<>I-1) and (r<>p-1) then
begin
For c:=1 to lenColumns do
write(M[r,c]:8);
writeln;
end;

readkey
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Условие в Until не совсем то, что просил автор, а потому - избыточное...

Вот так было первоначально:
...
Until (i<=lenrows) and (p<=lenrows) and (i<p) and (i<>1);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Большое спасибо всем кто участвувал здесь, вы меня выручили!
yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 19:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name