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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> матрица MXN, вставить столбец
Svetlana
сообщение 6.06.2009 0:04
Сообщение #1


Новичок
*

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

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


В заданной матрице сформированной случайно вставить второй столбец перед всеми стольбцами,в которых нет отричательных элементов. Не могу найти ошибку...логическая...

program Project4;

{$APPTYPE CONSOLE}

uses
SysUtils;
var n,m,i,j:integer; a,b:array of array of integer; flag:boolean;
begin
randomize;
writeln('vvedite razmernost matricy(lines):'); readln(n); //вводим размерность
writeln('vvedite razmernost matricy(columns):'); readln(m);
setlength(a,n,m); setlength(b,n,m);
writeln('Ischodnay matrica razmerom ',n,'X',m,':');
writeln;
for i:=0 to n-1 do begin
for j:=0 to m-1 do begin a[i,j]:=random(11)-5; write(a[i,j]:3,' ') end; writeln end; //заполняем



for j:=0 to m-1 do begin
flag:=true;i:=0;
while (i<=n-1)and(flag=true) do begin
if a[i,j]>0 then flag:=true else flag:=false;
i:=i+1
end;

if flag=true then begin m:=m+1; setlength(b,n,m);
for i:=0 to n-1 do begin
b[i,j]:=a[i,1];
b[i,j+1]:=a[i,j]
end;
end
else for i:=0 to n-1 do
b[i,j]:=a[i,j];end;
writeln('Konechnay matrica razmerom ',n,'X',m,':');
writeln;
for i:=0 to n-1 do begin // вывод
for j:=0 to m-1 do write(b[i,j]:3,' '); writeln end;
readln
{ TODO -oUser -cConsole Main : Insert code here }
end.


Сообщение отредактировано: Svetlana - 6.06.2009 0:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Krjuger
сообщение 6.06.2009 0:48
Сообщение #2


Профи
****

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

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


Цитата
a,b:array of array of integer;

я думаю это не логическая ошибка,но ошибка....
Девушка,что за setlength??? вы работаете с матрицей,а не строкой.....

a: array[1..50,1..50] of integer;
b:array [1..50] of integer;


Я думаю вам больше матрица и не нужна,просо скажите,что если больше,то прога кукиш покажет.А еще нам надо запомнить вашу строку,а то вдруг там есть искомые елементы,тогда наша вторая строка тут же станет трьетьей и тд.


for i:=1 to n do begin

for j:=1 to m do begin
a[i,j]:=random(11)-5;
write(a[i,j]:3,' ')
end;

writeln;//точку с запятой забыли
end; //заполняем

for i:=1 to m do begin
b[i]:=a[i,2];
end;

for j:=1 to m do begin
flag:=false;
i:=1;
while (i<=n) or (flag=false) do begin//надо чтобы мы выходили при выполнении любого из условий,а то если у
//тебя флаг тру но не конец строки,ты не выйдеш из цикла,и если конец,но не флаг фалс,то опять таки из
//цикла ты не выходиш и у тебя зацикливание.
if a[i,j]>0 then flag:=true else flag:=false;
i:=i+1
end;

if flag=true then begin

for i:=1 to m do begin
a[i,j]:=b[i];
end;
end;
end;

writeln('Konechnay matrica razmerom ',n,'X',m,':');
writeln;
for i:=1 to n do begin // вывод
for j:=1 to m do
write(a[i,j]:3,' ');
writeln;//не забывай про точку с запятой
end;
readln;


Паскаля нету,сижу не с компа,а с ноута,если что то пропустил или ошибся,поправьте пожалуста.

А к тебе вопрос,ты ВСТАВЛЯЕШ строку,или заменяеш строку,по твоему коду я прихожу к выводу,что второе,потому,что если бы ты вставляла,то вторая матрица была бы жирнее первой.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 10.07.2025 23:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"