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

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

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

> Обработка массивов. Матрицы, помогите чуть-чуть, не понимаю про элемент матрицы
сообщение
Сообщение #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 -


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


Гуру
*****

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

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


У меня несколько вопросов по приведенному фрагменту кода:

if a[i,j]> b[i,j] then
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[g,j];
a[g,j]:=a[h,j];
a[h,j]:=s;

в первой стоке для адресации используются переменные цикла, но ВНЕ циклов. К каким элементам массивов a и b осуществляется доступ?
в 3-й строке у тебя перебор до m. Максимальное значение m, насколько понимаю, 6. Вопрос: к какому элементу массива будет обращение в 8-10 строках? Посчитай значения индексов.

Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(andriano @ 30.12.2007 17:40) *

У меня несколько вопросов по приведенному фрагменту кода:

if a[i,j]> b[i,j] then
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[g,j];
a[g,j]:=a[h,j];
a[h,j]:=s;

в первой стоке для адресации используются переменные цикла, но ВНЕ циклов. К каким элементам массивов a и b осуществляется доступ?
в 3-й строке у тебя перебор до m. Максимальное значение m, насколько понимаю, 6. Вопрос: к какому элементу массива будет обращение в 8-10 строках? Посчитай значения индексов.


так а к каким надо обращаться?
если как у меня то будет
i,j=1 => g=1 h=2
i,j=2 => g=3 h=4
i,j=3 => g=5 h=6
i,j=4 => g=7 h=8
i,j=5 => g=9 h=10
i,j=6 => g=11 h=12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

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

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


Цитата(maximmax @ 30.12.2007 18:31) *

так а к каким надо обращаться?
Сравнивать надо было КОЛИЧЕТВО элементов подсчитанное для каждой из матриц (число целое), а не величину отдельных элементов матрицы.
В условии они называются NA и NB, а у тебя в прогамме o и l.
Цитата

если как у меня то будет
i,j=1 => g=1 h=2
i,j=2 => g=3 h=4
i,j=3 => g=5 h=6
i,j=4 => g=7 h=8
i,j=5 => g=9 h=10
i,j=6 => g=11 h=12

Ну и что, в твоих матрицах есть элементы с такими индексами?
Вклюыи в компиляторе проверки выход из диапазона.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(andriano @ 30.12.2007 19:25) *

Сравнивать надо было КОЛИЧЕТВО элементов подсчитанное для каждой из матриц (число целое), а не величину отдельных элементов матрицы.
В условии они называются NA и NB, а у тебя в прогамме o и l.
Ну и что, в твоих матрицах есть элементы с такими индексами?
Вклюыи в компиляторе проверки выход из диапазона.

тоесть так надо..

if o> l then
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[g,j];
a[g,j]:=a[h,j];
a[h,j]:=s;



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


s:=a[g,j];
a[g,j]:=a[h,j];
a[h,j]:=s;


сдесь можно как нибудь сделать чтоб не по элементно было а сразу строчка.....? там например 1 я строчка со всеми элементами в s записывалась и менялась со второй....потом 3 я срочка так же с 4й...5 я с 6й...

я еще попробовал сделать вот так(ведь матрица 6Х6 так и задасть так перемену строк)

for i:=1 to m do{cikl zameni 4etnih strok na ne 4etnie}
for j:=1 to n do
begin
s:=a[1,j];
g:=a[3,j];
h:=a[5,j];
a[1,j]:=a[2,j];
a[3,j]:=a[4,j];
a[5,j]:=a[6,j];
a[2,j]:=s;
a[4,j]:=g;
a[6,j]:=h;
с[1,j]:=a[1,j];
с[3,j]:=a[3,j];
с[5,j]:=a[5,j];
с[2,j]:=s;
с[4,j]:=g;
с[6,j]:=h;



но что то не прожевал паскаль((((((((((((((((((((((((99
может эту запись можно подправить и он будет по элементно перемещать строчки?

Сообщение отредактировано: maximmax -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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