Страница 1 из 1
[pascal] двумерный символьный массив
Добавлено: 04 май 2007, 08:59
AsteroTh
здравствуйте. не могли бы вы помочь мне со следующим заданием.
надо ввести слово или несколько слов без пробелов (например - "сотовыйтелефон") в массив, состоящий из 4х стобцов и N строк (в зависимости от длины вводимого слова). после чего поочередно переставляются столбцы, а затем сроки. при недостаточной длине ключевого слова его повторяют. в итоге должна получится шифровка.
помогите если возможно. :d
Re: [pascal] двумерный символьный массив
Добавлено: 08 май 2007, 06:58
AsteroTh
Вроде написал правильный текст для создания самого массива, но не получается поменять местами строки. в чем ошибка?
код:
const
n = 8;
type
sType = string[n];
matrix = array[1 .. n] of sType;
const
tab: matrix = (
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx'
);
st: string =
'vveditenujnoeslovo';
procedure EncodeText(const s: string;
const tab: matrix; var mx: matrix);
var
i, j, buf: integer;
begin
for i:=1 to n do
for j:=1 to n do
buf:=mx[i,j]; mx[i,j]:=mx[j,i]; mx[j,i]:=buf;
end.
Re: [pascal] двумерный символьный массив
Добавлено: 08 май 2007, 10:57
Хыиуду
Как минимум в том, что ты меняешь все значения местами по два раза (например, m[2,5] и m[5,2] меняются местами при i=5, j=2 и при i=2, j=5).
Цикл должен выглядеть примерно так:
for i:=1 to n-1 do
for j:=i+1 to n do
Re: [pascal] двумерный символьный массив
Добавлено: 10 май 2007, 09:01
AsteroTh
вот что у меня получилось:
код:
const
n = 8;
type
sType = string[n];
matrix = array[1 .. n] of sType;
const
tab: matrix = (
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx',
'xxxx'
);
st:string = 'vvediteslovo';
procedure EncodeText(const tab: matrix; var buf,mx: matrix);
var
i, j, : integer;
begin
for i:=1 to n+1 do
for j:=1+i to n do
buf:=mx[i,j]; mx[i,j]:=mx[j,i]; mx[j,i]:=buf;
end;
procedure print;
begin
for i:=1 to n do begin
for j:=1 to n do write(tab[i,j]:4);
writeln;
end;
end;
begin
writeln('ishodnaya'); print;
st;
writeln('rezultat'); print;
readln;
end readln (tab
);
writeln(tab);
;
end.
но перед началом процедуры Print выдает ошибку Error in statement. и я не знаю что делать
если не трудно могли бы вы написать весь код программы. а то работу надо завтра сдавать, а как написать я все еще не могу понять.
Re: [pascal] двумерный символьный массив
Добавлено: 10 май 2007, 10:24
Хыиуду
Вот это
buf:=mx[i,j]; mx[i,j]:=mx[j,i]; mx[j,i]:=buf;
обрамить бегином и эндом. Это все целиком в цикле выполняется
Во-вторых, зачем в процедуру передавать константу и переменную buf, если она вполне может быть внутренней переменной? Достаточно procedure EncodeText(var mx: matrix);
более того, процедура EncodeText у тебя нигде не используется.
А ошибка возникает в строке st; - я вообще не понимаю, что тут имелось в виду