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

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

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

> Обработка массивов. Матрицы, помогите чуть-чуть, не понимаю про элемент матрицы
maximmax
сообщение 30.12.2007 13:06
Сообщение #1





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

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


Входной массив А 6Х6
формируемый B 6Х6 где b[i,j]=i*cos(i+j) i:=1..6, j:=1..6
для каждой из матриц вычислить число элементов меньших 0.5(NA и NB) Переставить строчки местами в маттрице А, если NA>NB и в матрице B если NA<=NB(матрица C)
вывести A,B, NA, NB, C.

текст проги.

М
используй теги



program matrix;
Var a: array[1..6, 1..6] of real;
b: array[1..6, 1..6] of real;
c: array[1..6, 1..6] of real;
i, j, n, m, q, p, o, l, g, h: integer;
t, s:real;
begin
g:=1;{ne4etnie stroki}
h:=1;{4etnie stroki}
t:=0.5;{4islo, iz DANO dla opredelenia <>}
Write('CTPOKI'); Readln(m);
Write('STOLBCI'); Readln(n);
writeln('vvedite massiv A:');
o:=0;
For i:=1 to m do{Cikl zapolnenija matrici}
For j:=1 to n do
begin
write('a[',i: 2,',',j: 2,']', '=');
read(a[i, j]);
if a[i,j]<t then o:=o+1{s4etcik elementov<0,5 dla A}
end;
For i:=1 to m do {vivod matrici A}
begin
writeln;
For j:=1 to n do
begin
write(a[i,j] :7,' ');
if b[i,j]<t then l:=l+1 {s4etcik elementov<0,5 dla B}
end;
end;
writeln;
writeln;
For i:=1 to m do {vivod matrici B}
begin
writeln;
For j:=1 to n do
begin
b[i,j]:=i*cos(i+j);
write(b[i,j] :7,' ');
end;
end;
writeln;
writeln;
writeln('oPABHO=',o);{vivod kolicestva elementov<0,5 A}
writeln('lPABHO=',l);{vivod kolicestva elementov<0,5 B}
for i:=1 to m do{cikl zameni 4etnih strok na ne 4etnie}
begin
g:=(i*2)-1;{ne4etnie stroki}
h:=2*i;{4etnie stroki}
s:=a[g,i];
a[g,i]:=a[h,i];
a[h,i]:=s;
end;
For i:=1 to m do
begin
writeln;
For j:=1 to n do
begin
write(a[i,j] :7);{vivod matrici A s zamenoi strok}
end;
end;
writeln;
readln(q);{readkey ne rabotaet(( sdelal tak vihod}
end.
end.
end.


написал не правильно. т.к не считает у меня элементы матрици А и B..вот это я и не понимаю как сделать...
помогите плз!

Сообщение отредактировано: klem4 - 30.12.2007 13:56


Прикрепленные файлы
Прикрепленный файл  ___MATRIX.pas ( 1.5 килобайт ) Кол-во скачиваний: 219
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
andriano
сообщение 30.12.2007 23:05
Сообщение #2


Гуру
*****

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

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


Это что, шутка такая?
В общем, соображения такие: за один проход цикла ты обрабатываешь по две строки матрицы. Значит, длина цикла должна быть в 2 раза меньше (если бы обрабатывал по 3 строки - то в 3 раза меньше).
Откуда:
  for i:=1 to m div 2 do begin {cikl zameni 4etnih strok na ne 4etnie}
g:=(i*2)-1;{ne4etnie stroki}
h:=2*i;{4etnie stroki}
c[h]:=a[g];
c[g]:=a[h];
end;

Для b, естественно, следать аналогично.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maximmax
сообщение 30.12.2007 23:21
Сообщение #3





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

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


Цитата(andriano @ 30.12.2007 23:05) *

Это что, шутка такая?
В общем, соображения такие: за один проход цикла ты обрабатываешь по две строки матрицы. Значит, длина цикла должна быть в 2 раза меньше (если бы обрабатывал по 3 строки - то в 3 раза меньше).
Откуда:
  for i:=1 to m div 2 do begin {cikl zameni 4etnih strok na ne 4etnie}
g:=(i*2)-1;{ne4etnie stroki}
h:=2*i;{4etnie stroki}
c[h]:=a[g];
c[g]:=a[h];
end;

Для b, естественно, следать аналогично.


чего то пишет Types Mishmatch...... хотя integer с real менял и так и так.....и сяк.... все равно..

а моя фигулинка вроде считает....ненаю тока..я ошибок не нашел....


program matrix;
uses crt;
Var a: array[1..6, 1..6] of real;
b: array[1..6, 1..6] of real;
c: array[1..6, 1..6] of real;
i, j, n, m, q, p, o, l, g, h: integer;
t, s:real;
begin
clrscr;
{g:=1;{ne4etnie stroki}
{h:=1;{4etnie stroki}
t:=0.5;{4islo, iz DANO dla opredeleniz <>}
textcolor(red);
Write('CTPOKI'); Readln(m);
Write('STOLBCI'); Readln(n);
textcolor(blue);
writeln('vvedite massiv A:');
o:=0;
For i:=1 to m do{Cikl zapolnenija matrici}
For j:=1 to n do
begin
write('a[',i: 2,',',j: 2,']', '=');
read(a[i, j]);
if a[i,j]<t then o:=o+1{s4etcik elementov<0,5 dla A}
end;
For i:=1 to m do {vivod matrici A}
begin
writeln;
For j:=1 to n do
begin
write(a[i,j] :7,' ');
end;
end;
writeln;
writeln;
For i:=1 to m do {vivod matrici B}
begin
writeln;
For j:=1 to n do
begin
b[i,j]:=i*cos(i+j);
textcolor(yellow);
write(b[i,j] :7,' ');
if b[i,j]<t then l:=l+1 {s4etcik elementov<0,5 dla B}
end;
end;
writeln;
writeln;
textcolor(blue);
writeln('elementov< 0.5 V A=',o);{vivod kolicestva elementov<0,5 A}
writeln('elementov< 0.5 V B=',l);{vivod kolicestva elementov<0,5 B}
if l>=o then
begin
for i:=1 to m do{cikl zameni 4etnih strok na ne 4etnie}
begin
{ g:=(i*2)-1;{ne4etnie stroki}
{h:=2*i;{4etnie stroki}
s:=b[1,i];
b[1,i]:=b[2,i];
b[2,i]:=s;
c[1,i]:=b[1,i];
c[2,i]:=s;
s:=b[3,i];
b[3,i]:=b[4,i];
b[4,i]:=s;
c[3,i]:=b[3,i];
c[4,i]:=s;
s:=b[5,i];
b[5,i]:=b[6,i];
b[6,i]:=s;
c[5,i]:=b[5,i];
c[6,i]:=s;
end;
For i:=1 to m do
begin
writeln;
For j:=1 to n do
begin
textcolor(green);
write(c[i,j] :7);{vivod matrici C s zamenoi strok}
end;
end;
end
else
begin
for i:=1 to m do{cikl zameni 4etnih strok na ne 4etnie}
{for j:=1 to n do}
begin
{g:=(i*2)-1;{ne4etnie stroki}
{h:=2*i;{4etnie stroki}
s:=a[1,i];
a[1,i]:=a[2,i];
a[2,i]:=s;
c[1,i]:=a[1,i];
c[2,i]:=s;
s:=a[3,i];
a[3,i]:=a[4,i];
a[4,i]:=s;
c[3,i]:=a[3,i];
c[4,i]:=s;
s:=a[5,i];
a[5,i]:=a[6,i];
a[6,i]:=s;
c[5,i]:=a[5,i];
c[6,i]:=s;
end;
For i:=1 to m do
begin
writeln;
For j:=1 to n do
begin
textcolor(green);
write(c[i,j] :7);{vivod matrici C s zamenoi strok}
end;
end;
end;
writeln;
readkey;
end.
end.
end.



Сообщение отредактировано: maximmax - 30.12.2007 23:30


Прикрепленные файлы
Прикрепленный файл  __MAXMAT.PAS ( 2.44 килобайт ) Кол-во скачиваний: 191
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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