Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задачка,кто может,помогите пожалуйста.

Автор: zAra 6.12.2007 3:24

Помогите,кому не сложно пожалуйста,очень надо!!!!
Использовать подпрограммы(ввода,вывода,обрабатывающей
части).Дан массив целых чисел A[M,N],где
M,N<=10.Удалить все столбцы,в которых первый элемент
больше последнего.
Код не правильный-так мои идейки.

Uses crt;
type
mas=array[1..10,1..10]of integer;
size=1..10;
var
a:mas;
i,j:integer;
n,m:size;
res:integer;
Procedure Inp(n,m:integer;Var a:mas);
Var
i,j:integer;
begin
randomize;
For i:=1 to n do
For j:=1 to m do
a[i,j]:=integer(random(10))-3;
end;
procedure sear(n,m:integer;var a:mas;var res:integer);
var
i,j:integer;
begin
res:=1;
for j:= 1 to m do
if a[1,j]>a[10,j] then res:=j;
end;
Procedure Del(Var a:mas; Var n,m:integer; k1 :
integer);
Var
i, j : integer;
Begin
for j := k1 to m-1 do
for i := 1 to n do
a[i, j] := a[i,j+1];
for i := 1 to n do
a[i, m] := 0;
Dec(m);
End;
Procedure Out(n,m:integer;Var a:mas);
Var
i,j:integer;
begin
For i:=1 to n do begin
For j:=1 to m do
write(a[i,j]:5); writeln;
end;
end;
begin
writeln('Vvedite razmernost'' matricy: ');
readln(n,m);
inp(n,m,a);
writeln('Matrica do udaleniya stolbcov: ');
out(n,m,a);
writeln('Matrica posle udaleniya stolbcov: ');
sear(n,m,a,res);
del(a,n,m,res);
out(n,m,a);
readln;
end.

Автор: Lapp 6.12.2007 5:30

Цитата(zAra @ 5.12.2007 23:24) *
Код не правильный-так мои идейки.
Идейки - это замечательно, кроме шуток (большинство приходит без них), но Правила выполнять все же надо.

М
Цитата
1. Заголовок темы должен быть информативным. В противном случае тема удаляется

- приведи заголовок темы в соответствие с этим пунктом. Срочно



М
Цитата
2. Все тексты программ должны помещаться в теги [сode=pas] ... [/сode].

- на этот раз я сам тебе исправлю. Учти на будущее!


Автор: Lapp 6.12.2007 17:54

Все в целом неплохо, только у тебя одна ошибка в процедуре Sear была (10 нужно заменить на n), но можно ее не исправлять, поскольку эта процедура совсем не нужна. Я сделал цикл с поиском нужных столбцов в самом теле главной программы, в этом цикле вызывается проседура Del - разберись с этим.

Совет: старайся избегать названий процедур и переменных, которые совпадают с зарезервированными паскалевскими словами. Переименуй процедуру Out. Кстати, самое подходящее название - Show smile.gif.

И обрати внимание на форматирование..

Uses crt;
type
mas=array[1..10,1..10]of integer;
size=1..10;
var
a:mas;
i,j:integer;
n,m:size;

Procedure Inp(n,m:integer;Var a:mas);
Var
i,j:integer;
begin
randomize;
For i:=1 to n do For j:=1 to m do a[i,j]:=integer(random(10))-3;
end;

Procedure Del(Var a:mas; Var n,m:size; k1 :integer);
Var
i, j : integer;
Begin
for j := k1 to m-1 do for i := 1 to n do a[i, j] := a[i,j+1];
for i := 1 to n do a[i, m] := 0;
Dec(m);
End;

Procedure Out(n,m:integer;Var a:mas);
Var
i,j:integer;
begin
For i:=1 to n do begin
For j:=1 to m do write(a[i,j]:5);
writeln;
end;
end;

begin
writeln('Vvedite razmernost'' matricy: ');
readln(n,m);
inp(n,m,a);
writeln('Matrica do udaleniya stolbcov: ');
out(n,m,a);
writeln('Matrica posle udaleniya stolbcov: ');
{sear(n,m,a,res);}
for j:=m downto 1 do if a[1,j]>a[n,j] then del(a,n,m,j);
out(n,m,a);
readln;
end.

Автор: volvo 6.12.2007 18:28

Цитата
Совет: старайся избегать названий процедур и переменных, которые совпадают с зарезервированными паскалевскими словами. Переименуй процедуру Out.
Зарезервированное слово Out к Турбо-Паскалю не имеет ровно никакого отношения. Введено оно было только в Object Pascal-е (так же как, кстати, и слово Index... Что же теперь, и Index-ом нельзя в TP переменную назвать?)