|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.11.2008, 21:15 | #1 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Задачка на уплотнение матрицы
Добрый вечер, господа программеры))Хотелось бы услышать от вас подсказку или хотя бы совет по решению задачки.
Вот собственно она: "1. Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные ну- лями. 2.Найти номер первой из строк, содержащих хотя бы один положительный элемент." Вот мои наброски, но я никак не пойму как решить условие 1 Код:
|
16.11.2008, 22:18 | #2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Вот программа по удалению строк и столбцов, содержащих ноли. Ее надо немного переделать, попробуй сам, а то у меня поздно, голова не варит. Процедуры сам напишешь. Если запутаешься, пиши.
Код:
|
16.11.2008, 22:30 | #3 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Конечно, огромное спасибо) ща займусь!))
|
16.11.2008, 23:21 | #4 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Посмотрите пожалуйста, на мои чудачества) Я наверно не правильно понял как именно нужно было подправить. Чего то я наверно не понял..
uses crt; type matrix=array [1..50,1..50] of integer; var n,i,j,p:integer; a,b:matrix; procedure U_s_s_0 (a,b:matrix; n,p:integer); var i,j,k,t,m:integer; begin {Udalenie stroki s 0} i:=1; while i<=n do begin k:=0; for j:=1 to p do if a[i,j]=0 then begin k:=k+1; end; if k=n then //здесь переделать begin for t:=1 to p do for m:=i to n-1 do begin a[m,t]:=a[m+1,t]; end; n:=n-1; end else i:=i+1; end; end; procedure U_st_s_0(var a,b:matrix;p:integer); var i,j,m,t,g,k:integer; {Udalenie stolbca s 0} begin writeln('Rezultat:'); g:=0; for j:=1 to p do begin k:=0; for i:=1 to p do if b[i,j]=0 then begin k:=k+1; end; if k=p then //здесь переделать begin for m:=1 to n do for t:=j-g to p-1 do begin a[m,t]:=a[m,t+1]; end; g:=g+1; end end; end; Procedure vyvod(a:matrix; n:integer); var i,j,g:integer; begin for i:=1 to n do begin for j:=1 to p-g do write(a[i,j]:4); writeln; end; readln; end; begin clrscr; write('n=');readln(n); p:=n; //запомним размер матрицы, т.к. будем его менять Writeln('Введите элементы массива:'); For i:=1 to n do For j:=1 to n do Readln(a[i,j]); Writeln('Ishodnaja matrica:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; readln; b:=a; //запомним исходную матрицу, будем ее 2 раза калечить U_s_s_0 (a,b,n,p); U_st_s_0(a,b,p); vyvod( a,n); end. |
16.11.2008, 23:52 | #5 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Ты зря обработку матрицы разбил на две процедуры, это одна процедура и здесь менять местами удаление строк и столбцов нельзя, а если отдельные процедуры, то можно. Здесь матрица преобразовывается постепенно, сначала строки, потом столбцы. Можно наоборот, но это всю процедуру переписывать надо. Когда код публикуешь, оформляй тегами, плохо читать. Кнопка в виде решетки над окном сообщений.
|
16.11.2008, 23:55 | #6 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Вопрос, а там где править циклы, я правильно Вас понял?)
|
16.11.2008, 23:58 | #7 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Да, правильно. Я тоже посмотрю, надо еще кое-что поправить. Я это давно писал, там есть немного лишнее.
|
17.11.2008, 00:25 | #8 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Код:
|
17.11.2008, 00:37 | #9 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Вот, все поправил.
Код:
|
17.11.2008, 06:49 | #10 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 40
|
Не поверите, когда я сам делал у меня получалось нечто похожее(именнно в цикле сортировки, я там изначально тоже пытался считать количество нулей и сравнивать с эталоном), только я зашел в тупик из-за того, забыл о замечательном цикле while, да и еще руки кривоваты правильно использовать в процедурах параметры - переменные, параметры-ф-ции. И поэтому у меня и данные тупили с переходом из процедуры в процедуры.
А почему вложенность допустим Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обращение матрицы методом союзной матрицы | dofmat | Помощь студентам | 6 | 03.10.2011 15:01 |
Матрицы | FatalX | Помощь студентам | 21 | 17.04.2009 22:50 |
Матрицы | Сапфира | Помощь студентам | 4 | 21.09.2008 16:10 |
Задачка в паскале на матрицы | Марик | Помощь студентам | 2 | 25.06.2008 00:18 |
матрицы | chelsi | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 25.04.2008 10:07 |