Дан двухмерный массив. Удалить из него две строки, одна из которых расположена
перед s-й строкой, а вторая перед p-й. Вобшем я создал массив, а дальше не знаю,
если можно допишите вот текст
Как именно удалить?
1.Можно просто при следующем выводе массива не показывать эти две строки.
2.Забить нулями и оставить висеть на своих местах
2.1.Забить нулями и не учитывать при выводе.
3.Здвинуть строки в конец массива и при выводе не учитывать.
Первый вариант самый простой, но дуаю самый тупой...
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.
И ещеодн:
В задании писано:" Удалить из него две строки, одна из которых расположена
перед s-й строкой, а вторая перед p-й. "
Перед первой строкой ничего неи! Я думаю будет логично в таком случае удалить первую строку,
хотя можно запретить вводить в качестве удаляемой строки первую.
Вот прога, вроде рабочая.
Еденицу вводить нельзя...
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.
Условие в Until не совсем то, что просил автор, а потому - избыточное...
Вот так было первоначально:
...
Until (i<=lenrows) and (p<=lenrows) and (i<p) and (i<>1);