Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2008, 20:06   #1
Almost456
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 17
По умолчанию Матрица

В задание нужно заменить все элементы матрицы на 1 и 0.
1-повторяющиеся элементы,0-не повторяющиеся.
Код:
program fauna;
uses crt;
var i,j:integer;
one_zero:integer;
sal1:array[1..4,1..4] of integer;
begin
CLrScr;
Writeln('Enter matrix');
for j:= 1 to 4 do
for i:= 1 to 4 do
begin
gotoxy(3+i*4,3+j*2);
readln(sal1[i,j]);
end;

for j:=1 to 4 do
for i:= 1 to 4 do
if sal1[j,i]<>one_zero then begin
one_zero:=sal1[j,i];
sal1[j,i]:=0;
end
else
begin
one_zero:=sal1[j,i];
sal1[j,i]:=1;
end;

for i:= 1 to 4 do
begin
for j:= 1 to 4 do
write(sal1[j,i]:3);
writeln;
end;
readkey;
end.
например я ввожу все 2 и одну 5
2 2 2 5
2 2 2 2
2 2 2 2
2 2 2 2
и получается вот что
0 1 1 0
1 1 1 0
1 1 1 1
1 1 1 1
В чём проблема?
Almost456 вне форума Ответить с цитированием
Старый 06.12.2008, 23:24   #2
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
По умолчанию

Код:
for j:= 1 to 4 do
begin
for i:= 1 to 4 do
write(sal1[j,i]:3);
writeln;
end;
Вот эту часть кода нужно так исправить,и все работает...Просто местами переменные перепутались)))
C#, MySQL, F*cking, Rock'n'roll and smile.
Vedun вне форума Ответить с цитированием
Старый 07.12.2008, 00:06   #3
Almost456
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 17
По умолчанию

Vedun это
Код:
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
write(sal1[j,i]:3);
writeln;
end;
я специально написал,чтобы матрица выводила такое же построение как и в вводимой матрице.
Almost456 вне форума Ответить с цитированием
Старый 07.12.2008, 00:55   #4
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
По умолчанию

я эту часть поменял в коде,у меня все норм выводила...
1 1 1 5
1 1 1 1
1 1 1 1
1 1 1 1
Он мне выдал
0 1 1 0
0 1 1 1
1 1 1 1
1 1 1 1
так как и должно получатся...
C#, MySQL, F*cking, Rock'n'roll and smile.
Vedun вне форума Ответить с цитированием
Старый 07.12.2008, 00:59   #5
Almost456
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 17
По умолчанию

Цитата:
0 1 1 0
0 1 1 1
1 1 1 1
1 1 1 1
так как и должно получатся...
А почему лишние нули?Всмысле тут 3 нуля,а должен быть один
Almost456 вне форума Ответить с цитированием
Старый 07.12.2008, 01:01   #6
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
По умолчанию

У тебя прога проверяет наличие повторяющихся символов не во всей матрице,а только последовательно...То есть если последующий символ будет равен предыдущему...
C#, MySQL, F*cking, Rock'n'roll and smile.
Vedun вне форума Ответить с цитированием
Старый 07.12.2008, 01:08   #7
Almost456
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 17
По умолчанию

... то предыдущий должен замениться на 0?так не должно быть.это как раз и не правильно.Мне же нужно все элементы заменить в матрице...
Almost456 вне форума Ответить с цитированием
Старый 07.12.2008, 01:19   #8
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
По умолчанию

тогда убири эту чусть кода
Код:
for j:=1 to 4 do
for i:= 1 to 4 do
if sal1[j,i]<>one_zero then begin
one_zero:=sal1[j,i];
sal1[j,i]:=0;
end
else
begin
one_zero:=sal1[j,i];
sal1[j,i]:=1;
end;
и замени на эту
Код:
for j:=1 to 4 do
for i:= 1 to 4 do
begin
one_zero:=sal1[j,i];
sal1[j,i]:=0;
for j:=1 to 4 do
for i:= 1 to 4 do
 if one_zero=sal1[b,a] then
sal1[j,i]:=1;
end;
Теперь он будет брать каждый элемент,равнять его изначально к нулю.А потом,если найдет хоть один похожий, приравняет к единице...Должно работать...
C#, MySQL, F*cking, Rock'n'roll and smile.

Последний раз редактировалось Vedun; 07.12.2008 в 01:27. Причина: Косяк обнаружил,исправил чать...
Vedun вне форума Ответить с цитированием
Старый 07.12.2008, 01:33   #9
Almost456
Пользователь
 
Регистрация: 30.11.2008
Сообщений: 17
По умолчанию

не работает.он на 1 элементе останавливается...Ты извини за хамство,но сначала проверь сам свою идею,работает она или нет,а потом присылай...

Последний раз редактировалось Almost456; 07.12.2008 в 01:36.
Almost456 вне форума Ответить с цитированием
Старый 07.12.2008, 01:51   #10
Vedun
Пользователь
 
Аватар для Vedun
 
Регистрация: 05.05.2008
Сообщений: 22
По умолчанию

Код:
program fauna;
uses crt;
var i,j,b,a,d:integer;
one_zero:integer;
sal1:array[1..4,1..4] of integer;
sal2:array[1..4,1..4] of integer;
begin
CLrScr;
Writeln('Enter matrix');
for j:= 1 to 4 do
for i:= 1 to 4 do
begin
gotoxy(3+i*4,3+j*2);
readln(sal1[i,j]);
end;

for j:=1 to 4 do
 for i:= 1 to 4 do
  begin
   d:=0;
   for b:=1 to 4 do
    for a:=1 to 4 do
     if sal1[j,i]=sal1[b,a] then d:=d+1;
   if d>1 then sal2[j,i]:=1
    else sal2[j,i]:=0;
  end;

for i:= 1 to 4 do
begin
for j:= 1 to 4 do
write(sal2[j,i]:3);
writeln;
end;
readkey;
end.
Эта работает...
C#, MySQL, F*cking, Rock'n'roll and smile.
Vedun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица =( Gwynbleidd Помощь студентам 3 16.12.2007 23:20
Матрица Cartman18 Помощь студентам 4 13.12.2007 19:49
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01