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

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

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

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


Гость






Привет. Помогите решить задачу.
Дана матрица размером 5*4. Поменять местами первую строку и строчку, в которой находится первый нулевой элемент.
Заранее спасибо!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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

 





- Текстовая версия 6.11.2025 13:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name