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

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

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

> Матрица, Поменять местами строки
Invisible
сообщение 7.11.2005 19:15
Сообщение #1


Гость






Привет. Помогите решить задачу.
Дана матрица размером 5*4. Поменять местами первую строку и строчку, в которой находится первый нулевой элемент.
Заранее спасибо!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Guest
сообщение 13.11.2005 14:00
Сообщение #2


Гость






Хм.... Спасибо. Но что-то результат не тот:

before:
3 10 7 12
14 5 8 14
3 6 0 13
3 1 10 14
0 6 3 9
after:
3 6 0 13
14 5 8 14
3 10 7 12
3 1 10 14
0 6 3 9

Что-то тут все в перемешку.
Вот сама программа:

program seven_two;
uses crt;
const
size_row = 5;
size_col = 4;

type
tvector = array[1 .. size_col] of integer;
tmatrix = array[1 .. size_row] of tvector;
procedure swap_rows(var mx: tmatrix;
const i, j: integer);
var T: tvector;
begin
T := mx[i]; mx[i] := mx[j]; mx[j] := T
end;

procedure print(var mx: tmatrix);
var i, j: integer;
begin
for i := 1 to size_row do
begin
for j := 1 to size_col do
write(mx[i][j]:4);
writeln
end;
end;

function contains_zero(var mx: tmatrix; row: integer): boolean;
var
j:integer;
found: boolean;
begin
j:=1; found:=false;
while (j<=size_col) and (not found) do begin
found:= (mx[row][j]=0); inc(j);
end;
contains_zero:=found;
end;

var
mx: tmatrix;
i, j: integer;

begin
clrscr;
for i := 1 to size_row do
for j := 1 to size_col do
mx[i][j] := random(15);
writeln('before:'); print(mx);
i:=1;
while (i <= size_row) do
if contains_zero(mx, i) then begin
swap_rows(mx, 1, i);
i := succ(size_row);
end
else inc(i);
writeln('after:'); print(mx);
readln;
end.


Это я попробовал способом volvo. Способами klem4 тоже не получилось. Может я что-то не то делаю? Так ткните носом пожалуйста.
 К началу страницы 
+ Ответить 

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


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

 



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