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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 6.06.2009 1:30
Сообщение #2


Гость






Цитата
Взято из FP.
Не вырывай фразы из контекста...

Цитата(rtl.pdf Параграф 36.9.278)
Description: SetLength sets the length of the string S to Len. S can be an ansistring, a short string or a widestring. For ShortStrings, Len can maximally be 255. For AnsiStrings it can have any value. For AnsiString strings, SetLength {nem must} be used to set the length of the string.
In the case of a dynamical array A, setlength sets the number of elements. The elements are numbered from index 0, so the count runs from 0 to Len-1. If Zero is specified, the array is cleared.
Учись читать доки полностью, и на языке оригинала...

Цитата
от этого я и не знала...А почему нельзя?
На самом деле у тебя все гораздо больше намудрено... Проблема - в том, что когда ты вставляешь столбец в массив B, он должен вставляться не как J-ый, а как последний (или 2 последних), иначе нумерация собьется. Смотри, насколько все проще:
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
n, m, i, j: integer;
a, b:array of array of integer;
flag:boolean;
len: integer;
begin
randomize;
writeln('vvedite razmernost matricy(lines):'); readln(n);
writeln('vvedite razmernost matricy(columns):'); readln(m);
setlength(a,n,m);
setlength(b,n,0); // <---

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(51)-5; write(a[i,j]:3,' ')
end;
writeln
end;

len := 0;
for j := 0 to m - 1 do begin
flag := true;
for i := 0 to n - 1 do flag := flag and (a[i, j] > 0);

if flag then begin
writeln('#', j);
Len := Len + 1;
setlength(b, n, Len);
for i := 0 to n - 1 do b[i, len-1] := a[i, 1];
end;
Len := Len + 1;
setlength(b, n, Len);
for i := 0 to n - 1 do b[i, len-1] := a[i, j];
end;

writeln('Konechnay matrica razmerom ',n,'X',len,':');
writeln;
for i:=0 to n-1 do begin
for j:=0 to len-1 do write(b[i,j]:3,' ');
writeln
end;
setlength(a, 0, 0); setlength(b, 0, 0); // <---
readln
end.
Тестировалось в FPC, могут быть несоответствия в обработке Дельфями, говори, если что...
 К началу страницы 
+ Ответить 
Svetlana
сообщение 6.06.2009 2:01
Сообщение #3


Новичок
*

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

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


Всё работает good.gif Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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