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

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

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

 
 Ответить  Открыть новую тему 
> Матрица., Своеобразный вывод матрицы.
AnTiDoD
сообщение 15.02.2007 18:12
Сообщение #1


Новичок
*

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

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


Здравствуйте, вот столкнулся с проблемой:
Дана матрица, найти в ней число k, и вывести все элементы марицы, которые <= k и,стоящие на той же(том же) строке(столбце), в другом цвете. - Эту часть сделал, но когда дано несколько k, то возникает проблема с сохранением определенных i и j. Для этого я взял отдельный массив l (x*2), который содержит в первом столбце определенный i и во втором, соответсвенно, j данного эл-та k.

Вот тест проги, помогите найти проблему:

uses crt;
var
a:array[1..10,1..10] of integer;
l:array[1..10,1..10] of integer;
i, j, n, m, k, q, w,d :integer;
begin
write('m=');
readln(m);
write('n=');
readln(n);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=Random(10);
writeln('Ucxodnay matruca:');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
write('k=');
readln(k);
q:=1;w:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]=k then
begin
l[q,w]:=i;
l[q,w+1]:=j;
q:=q+1;
w:=1;
end;
q:=1;w:=1;
for i:=1 to n do
begin
for j:=1 to m do
if a[i,j]<=k then
for q:=1 to 10 do
if (l[q,w]=i) or (l[q,w+1]=j) then
begin
TextColor(Red);
write(a[i,j],' ');
NormVideo;
break;
end
else
else
write(a[i,j],' ');
writeln;
end;

readkey;
end.



Сообщение отредактировано: AnTiDoD - 15.02.2007 18:15
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.02.2007 18:22
Сообщение #2


Гость






AnTiDoD, а как это ты себе представляешь, что дано НЕСКОЛЬКО k? Что, один и тот же элемент выводить одновременно разными цветами? Они же все равно выводятся по-очереди, так? Вот и иди от минимального К к максимальному...

Ты опиши, что ты ХОЧЕШЬ чтобы было, а не то, что неправильно работает...

P.S. Что за мода пошла - инвертировать заголовок? mad.gif Caps Lock заело?
 К началу страницы 
+ Ответить 
AnTiDoD
сообщение 15.02.2007 18:33
Сообщение #3


Новичок
*

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

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


Надо чтобы вывелась матрица с выделенными(в цвете) элементами, которые удолетворяют условию - <= k и находятся на там же столбце или строке... вот и все! А несколько k в матрице могут встретиться не один раз...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AnTiDoD
сообщение 15.02.2007 18:55
Сообщение #4


Новичок
*

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

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


Все я сделал и нашел ошибку!
Кому надо, то вот:

uses crt;
var
a:array[1..10,1..10] of integer;
l:array[1..10,1..10] of integer;
i, j, n, m, k, q, w,d :integer;
buf : boolean;
begin
clrscr;
write('m=');
readln(m);
write('n=');
readln(n);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=Random(10);
<...>
write('k=');
readln(k);
q:=1;w:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]=k then
begin
l[q,w]:=i;
l[q,w+1]:=j;
q:=q+1;
w:=1;
end;
q:=1;w:=1;
for i:=1 to n do
begin
for j:=1 to m do
if a[i,j]<=k then
begin
buf:=False;
for q:=1 to 10 do
if (l[q,w]=i) or (l[q,w+1]=j) then
begin
TextColor(Red);
write(a[i,j],' ');
NormVideo;
buf:=True;
break;
end;
if (not buf) then write(a[i,j],' ');
end
else write(a[i,j],' ');
writeln;
end;

readkey;
end.



Тему можно закрывать!!!

Сообщение отредактировано: AnTiDoD - 15.02.2007 19:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.02.2007 19:08
Сообщение #5


Гость






Еще раз - не путайся САМ и не путай НИКОГО!!! k у тебя ОДНО - ты вводишь его с клавиатуры, и для него отведена одна переменная типа Integer... Все. Больше с этим ничего не сделаешь... А вот ЭЛЕМЕНТОВ, больших или меньших или РАВНЫХ k, действительно может быть несколько...

Учитесь, наконец, вопросы-то задавать!
 К началу страницы 
+ Ответить 

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

 



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