![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
-Slavok- |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите со след. задачей.
Дана след. матрица: (0, 1, 0, 1, 0, 0, 1, 0) (0, 0, 0, 0, 1, 0, 0, 0) (1, 0, 1, 0, 0, 0, 1, 0) (0, 0, 0, 1, 0, 0, 0, 0) (0, 1, 0, 0, 0, 1, 0, 0) (1, 0, 0, 0, 1, 0, 0, 0) (0, 0, 1, 0, 0, 0, 1, 0) (0, 0, 0, 1, 0, 0, 0, 1) Вводится строка. Просматривается шифр. квадрат, если его элемент равен 1, то в новую символьную матрицу 8x8 на пересечении i-ого строки и j-ого столбца, т.е. там, где была 1 в шифр. квадрате, ставится текущий символ строки. Если шифр. кв. закончился, а строка нет, то шифр. кв. поворачивается вправо на 90 градусов и начинается просмотр нового шифр. кв. Процесс происходит пока не закончится строка. В рез-те мы получили симв. матрицу с зашифрованным текстом. Стока длиной не более 64 символов. Программу написал, но работет она неправильно, помогите найти ошибку или какой-нибудь др. метод решения. Заранее благодарю. Вот код программы: Код uses Crt; type Mass = array [1..8, 1..8] of 0..1; var S, S1 : String; NewM : array [1..8, 1..8] of Char; {Матрица с зашифрованным текстом} P, I, J : Word; Bool : Boolean; const Matr : Mass = ((0, 1, 0, 1, 0, 0, 1, 0), (0, 0, 0, 0, 1, 0, 0, 0), (1, 0, 1, 0, 0, 0, 1, 0), (0, 0, 0, 1, 0, 0, 0, 0), (0, 1, 0, 0, 0, 1, 0, 0), (1, 0, 0, 0, 1, 0, 0, 0), (0, 0, 1, 0, 0, 0, 1, 0), (0, 0, 0, 1, 0, 0, 0, 1)); procedure ReadData; var F : Text; begin Assign(F, 'Text.txt'); Reset(F); ReadLn(F, S); Close(F) end; procedure Povorot(var A : Mass); var B : Mass; {Поворот матрицы A на 90 градусов} I, J : Word; begin for I := 1 to 8 do for J := 1 to 8 do B[I, J] := 0; for I := 1 to 8 do for J := 1 to 8 do B[I, 9 - J] := A[J, I]; for I := 1 to 8 do for J := 1 to 8 do A[I, J] := B[I, J]; end; begin ClrScr; ReadData; for I := 1 to 8 do for J := 1 to 8 do NewM[I, J] := ' '; P := 1; Bool := True; while P <= Length(S) do begin I := 1; J := 1; while (I <= 8) and (Bool) do begin while J <= 8 do begin if Matr[I, J] = 1 then begin NewM[I, J] := S[P]; Inc(P); if P > Length(S) then begin Break; Bool := False end; end; Inc(J) end;{Конец цикла с J} Inc(I); J := 1; end;{Конец цикла с I} if (P = 17) or (P = 33) or (P = 49) then Povorot(Matr) end; S1 := ''; for I := 1 to 8 do for J := 1 to 8 do S1 := S1 + NewM[I, J]; I := Length(S1); while S1[I] = ' ' do begin Delete(S1, I, 1); Dec(I) end; Write(S1); end. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Значит, первое, что бросается в глаза - это то, КАК ты реализовал процедуру Povorot
![]() Я бы делал так: Procedure Povorot(Var a: Mass); И потом, как именно ты определяешь, что программа работает неправильно? У тебя есть какие-то тесты? |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 13:56 |