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

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

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

 
 Ответить  Открыть новую тему 
> Матрицы, задачка на Паскале
сообщение
Сообщение #1


Гость






Народ, помогите плиз, надо решить задачку, а в матрицах я нуб blink.gif (во всяком случае на Паскале).
Даны действительные числа а1, ..,а64; dry.gif
Получить действительную квалратную матрицу порядка 8, элементами которой являются числа а1,...а64, расположенные по схеме:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






по схеме:
.............
:............
.............:
:............
.............:
:............> smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

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

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


Схема у тебя конечно крутая ... может так ?

uses crt;

const
n=16;

var
a : array[1..n] of integer;
b : array[1..round(sqrt(n)), 1..round(sqrt(n))] of integer;
i,r,c : byte;
begin
clrscr;
r := 1;
c := 0;
for i := 1 to n do begin
readln(a[i]);
inc(c );
if c > (round(sqrt(n))) then begin
c := 1;
inc(r );
end;
b[r,c] := a[i];
end;

writeln;

for r := 1 to round(sqrt(n)) do begin
writeln;
for c := 1 to round(sqrt(n)) do write(b[r,c]:3,' ');
end;

readln


end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(klem4 @ 24.12.2005 10:27) *
может так ?

Klem4, спасибо большое, вы единственный форум который не выпендривается, загружая непонятными определениями, а реально помогает, спасибо ещё раз.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(Kos @ 24.12.2005 15:17) *

Klem4, спасибо большое, вы единственный форум который не выпендривается, загружая непонятными определениями, а реально помогает, спасибо ещё раз.

А у меня прога не работает unsure.gif !
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(klem4 @ 24.12.2005 10:27) *

Схема у тебя конечно крутая ... может так ?


Нет, скорее надо ввести етот цикл:
Код
i:=1;for J:=1 to 8 do if Odd(J) then for k:=1 to 8 do begin A[j, k]:=i; i:=1+1; end else for k:=8 to 1 do begin A[j, k]:=i; i:=1+1; end;


Если я не ошибаюсь конечно smile.gif .
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Negativka, вот результат выполнения твоего цикла:
Цитата
1 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0
2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0
2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0
2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0


Если бы автор (то есть ты же, судя по IP) не изгалялся в ответах типа "сам-себе", а привел нормально матрицу, которую он хочет видеть как результат, можно было бы даже сказать, устроит его какой-нибудь из приведенных вариантов, или нет... А так - гадание на кофейной гуще...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(volvo @ 24.12.2005 17:29) *

Negativka, вот результат выполнения твоего цикла:
Если бы автор (то есть ты же, судя по IP) не изгалялся в ответах типа "сам-себе", а привел нормально матрицу, которую он хочет видеть как результат, можно было бы даже сказать, устроит его какой-нибудь из приведенных вариантов, или нет... А так - гадание на кофейной гуще...

Да, с одного и того же компа(админ. клуба), точнее с одного и того же клуба, где работает автор и я, помогать конкретно я ему не буду, потому что он когда-то мне не помог с мат.анализом, а потому я ему не помогу с информатикой mega_chok.gif , увидит сообщение поймёт кто писал, нас не так уж и много там работает dry.gif !
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(Kos @ 24.12.2005 0:01) *

по схеме:
.............
:............
.............:
:............
.............:
:............> smile.gif

точная схема:
а8 а7 а6 а5 а4 а3 а2 а1
а9 а10 а11 а12 а13 а14 а15 а16
а24 а23 а22 а21 а20 а19 а18 а17
а25 а26 а27 а28 а29 а30 а31 а32
а40 а39 а38 а37 а36 а35 а34 а33
а41 а42 а43 а44 а45 а46 а47 а48
а56 а55 а54 а53 а52 а51 а50 а49
а57 а58 а59 а60 а61 а62 а63 а64
а72 а71 а70 а69 а68 а67 а66 а65
а73 а74 а75 а76 а77 а78 а79 а80
а88 а87 а86 а85 а84 а83 а82 а81
А Negativka, уже врядли сядит за это кресло , полез туда куда его не просили.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






const
n = 8;
var
a: array[1 .. n, 1 .. n] of integer;
i, j, k, T, count: integer;
begin
T := 1;
count := 1;
for i := 1 to n do begin
T := - T;
if odd(i) then j := n else j := 1;
for k := 1 to n do begin
a[i, j] := count;
inc(count); j := j + T;
end;
end;

for i := 1 to n do begin
for j := 1 to n do
write(a[i, j]:4);
writeln;
end;

end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Volvo, ты гений, спасибо всем за помощь в зачётной работе smile.gif , если бы не вы я бы mega_chok.gif smile.gif .
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Perl. Just code it!
******

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

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


только тебе вроде надо было с массивом это все проделать ? Вот по примеру проги volvo сделал, можно мне кажется еще упростить .. попробуй сам сделать

 uses crt;

const
n=16;
var
a : array[1..n] of integer;
b : array[1..round(sqrt(n)), 1..round(sqrt(n))] of integer;
i,r,c,T : shortint;
begin

clrscr;

for i := 1 to n do readln(a[i]);

r := 1;
c := round(sqrt(n));
T := -1;

for i := 1 to n do begin

if (c>round(sqrt(n))) or (c<1) then begin
inc( r );
T := -T;
inc(c,T);
end;

b[r,c] := a[i];

inc(c,T);

end;

writeln;

for r := 1 to round(sqrt(n)) do begin
writeln;
for c := 1 to round(sqrt(n)) do write(b[r,c]:3,' ');
end;

readln

end.


кстати, вот таже самая программа, но в ней есть отличие в одной строчке, прикотором правильно работать программа ну ни как не может и по идее должна вылелать с ошибкой, но отрабатывает на ура, компилятор соответственно FPC ;)

uses crt;

const
n=16;
var
a : array[1..n] of integer;
b : array[1..round(sqrt(n)), 1..round(sqrt(n))] of integer;
i,r,c,T : byte;
begin

clrscr;

for i := 1 to n do readln(a[i]);

r := 1;
c := round(sqrt(n));
T := -1;

for i := 1 to n do begin

if (c>round(sqrt(n))) or (c<1) then begin
inc( r );
T := -T;
inc(c,T);
end;

b[r,c] := a[i];

inc(c,T);

end;

writeln;

for r := 1 to round(sqrt(n)) do begin
writeln;
for c := 1 to round(sqrt(n)) do write(b[r,c]:3,' ');
end;

readln

end.


Сообщение отредактировано: volvo -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






klem4, с чего бы это
Цитата
должна вылелать с ошибкой
? blink.gif

Цикличность байта сохраняется, так что все будет работать... А вот так - не будет (на Segmentation Fault нарвешься):
var
a : array[1..n] of integer;
b : array[1..round(sqrt(n)), 1..round(sqrt(n))] of integer;
i,r,c: integer;
T : byte;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Perl. Just code it!
******

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

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


Volvo, а в чем же тут различие то ?! wacko.gif mega_chok.gif

   i,r,c,T : byte;


  i,r,c: integer;
T : byte;


имею в виду T что там байт, что тут ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






smile.gif Я знал, что ты заинтересуешься... Компилятору, грубо говоря, начхать, это Byte или ShortInt... Главное - чтобы выполнялось следующее: или тип T предназначен для работы с отрицательными числами, тогда при любом типе C все сработает; или тип Т не предназначен для хранения отрицательных чисел, имеет размер в 1 байт, и тип С имеет размер в 1 байт... А все остальное (названия типов) - важно для тебя, а не для компилятора... Он все равно работает с битовым представлением числа...

Смотри, что происходит:
1) описание где ВСЕ переменные - Byte
допустим, C = 6 и T = -1 (ну, то есть 255, если эту ячейку считать как Byte)
C = C + T; { = 6 + 255 = 261, правда? Но ведь 261 состоит из 2-х байт = 256*1 + 5, старший байт потерялся, младший что содержит? C - T, как и положено }

2) описание, где C: Integer... А вот тут - проблемы... Старший байт-то не теряется, поэтому после первого же "вычитания" у тебя идет попытка обратиться к элементу, лежащему далеко за пределами массива... Результат я тебе привел выше: SF

blum.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Cialis Nez Bouche
 К началу страницы 
+ Ответить 

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

 





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