Помощь - Поиск - Пользователи - Календарь
Полная версия: двумерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
bel100
С помощью двумерного массива символов 5*5 задайте в псевдографическом виде числа от 1 до 10. Прочитайте с экрана число, выведите его в псевдографическом начертании.
Пробую так (сократил до 4 , что бы не занимать лишнее место):
var aa:array[1..5,1..5]of char;
a,i,j:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
aa[i,j]:='.';
begin
writeln('Введите цифру от 1 до 4');
readln(a);
if (a>0)and(a<4) then

if a = 1 then
aa[2,2]:='*'; aa[1,3]:='*'; aa[2,3]:='*'; aa[3,3]:='*'; aa[4,3]:='*'; aa[5,3]:='*';

if a = 2 then
aa[1,2]:='*'; aa[1,3]:='*'; aa[1,4]:='*'; aa[2,4]:='*'; aa[3,3]:='*'; aa[3,4]:='*';
aa[3,2]:='*'; aa[4,2]:='*'; aa[5,2]:='*'; aa[5,3]:='*'; aa[5,4]:='*';

if a = 3 then
aa[1,2]:='*'; aa[1,3]:='*'; aa[1,4]:='*'; aa[2,3]:='*'; aa[3,3]:='*'; aa[3,4]:='*';
aa[3,2]:='*'; aa[4,3]:='*'; aa[5,2]:='*';

if a = 4 then
aa[1,2]:='*'; aa[2,2]:='*'; aa[3,2]:='*'; aa[3,3]:='*'; aa[3,4]:='*';
aa[1,4]:='*'; aa[2,4]:='*'; aa[3,4]:='*'; aa[4,4]:='*'; aa[5,4]:='*';

end;
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
write(aa[i,j]:3);
end;
writeln;
end;
end.
Получается ерунда:
Введите цифру от 1 до 4
3
. * * * .
. * * * .
. * * * .
. * * * .
. * * * .
Если оставить любую ОДНУ цифру то всё нормально:
var aa:array[1..5,1..5]of char;
a,i,j:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
aa[i,j]:='.';
begin
writeln('Введите цифру от 1 до 4');
readln(a);
if (a>0)and(a<4) then

if a = 4 then
aa[1,2]:='*'; aa[2,2]:='*'; aa[3,2]:='*'; aa[3,3]:='*'; aa[3,4]:='*';
aa[1,4]:='*'; aa[2,4]:='*'; aa[3,4]:='*'; aa[4,4]:='*'; aa[5,4]:='*';

end;
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
write(aa[i,j]:3);
end;
writeln;
end;
end.
Что опять у меня не так?
bel100
Как разделить действия?
Федосеев Павел
Сделайте
type
TChar = array [1..5, 1..5] of char; {один символ}
TChars = array [0..9] of TChar; {символы от 0 до 9}

А теперь в виде типизированной константы задайте все цифры:
const
MyChars: TChars = ( ( ( '.', '*', '*', '*', '*'), {символ '0'}
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*')
),
( ().......... {символ '1'}
)
)

И после этого обращаться для вывода массива
  for i:=1 to 5 do
begin
for j:=1 to 5 do
write(MyChars[a,i,j]);
writeln;
end;
bel100
Цитата(Федосеев Павел @ 1.06.2017 8:04) *

Сделайте
type
TChar = array [1..5, 1..5] of char; {один символ}
TChars = array [0..9] of TChar; {символы от 0 до 9}

А теперь в виде типизированной константы задайте все цифры:
const
MyChars: TChars = ( ( ( '.', '*', '*', '*', '*'), {символ '0'}
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*'),
(,'*', '*', '*', '*', '*')
),
( ().......... {символ '1'}
)
)

И после этого обращаться для вывода массива
  for i:=1 to 5 do
begin
for j:=1 to 5 do
write(MyChars[a,i,j]);
Получается вот что, но с ошибками задолбался , замучался совсем....
MyChars: TChars =(((' ',' ',' ',' ','*'), {символ'1'} пишет: ожидалось 10 элементов.... Но я 10 и вывел?


type TChar = array [1..5, 1..5] of char; {один символ}
TChars = array [1..10] of TChar; {символы от 1 до 10}
const
MyChars: TChars =(((' ',' ',' ',' ','*'), {символ'1'}
(' ',' ',' ','*','*'),
(' ',' ','*',' ','*'),
(' ',' ',' ',' ','*'),
(' ',' ',' ',' ','*'))
,
(' ',' ','*','*','*'),{символ'2'}
(' ',' ',' ',' ','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' '),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'3'}
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*',' ','*'),{символ'4'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ',' ',' ','*')
,
(' ',' ','*','*','*'),{символ'5'}
(' ',' ','*',' ',' '),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'6'}
(' ',' ','*',' ',' '),
(' ',' ','*','*','*'),
(' ',' ','*',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'7'}
(' ',' ',' ',' ','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' '),
(' ',' ','*',' ',' ')
,
(' ',' ','*','*','*'),{символ'8'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ','*',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'9'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' ')
,
(' ','*','*','*','*'),{символ'10'}
('*','*','*',' ','*'),
(' ','*','*',' ','*'),
(' ','*','*',' ','*'),
(' ','*','*','*','*')
) ;
var TChars:char;
TChars:a;
aa:array[1..5,1..5]of char;
a,i,j:integer;
begin
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(MyChars[a,i,j]);
writeln;
end;
end.
writeln;
end;


Федосеев Павел
Приводите всю программу, иначе невозможно тестировать.
bel100
Павел, заранее извиняюсь за то что вы сейчас увидите , но запутался окончательно...
Вариант 1:
type TChar = array [1..5, 1..5] of char; {один символ}
TChars = array [1..10] of TChar; {символы от 1 до 10}
const
MyChars: TChars =(((' ',' ',' ',' ','*'), {символ'1'}
(' ',' ',' ','*','*'),
(' ',' ','*',' ','*'),
(' ',' ',' ',' ','*'),
(' ',' ',' ',' ','*'))
,
(' ',' ','*','*','*'),{символ'2'}
(' ',' ',' ',' ','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' '),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'3'}
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*',' ','*'),{символ'4'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ',' ',' ','*')
,
(' ',' ','*','*','*'),{символ'5'}
(' ',' ','*',' ',' '),
(' ',' ','*','*','*'),
(' ',' ',' ',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'6'}
(' ',' ','*',' ',' '),
(' ',' ','*','*','*'),
(' ',' ','*',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'7'}
(' ',' ',' ',' ','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' '),
(' ',' ','*',' ',' ')
,
(' ',' ','*','*','*'),{символ'8'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ','*',' ','*'),
(' ',' ','*','*','*')
,
(' ',' ','*','*','*'),{символ'9'}
(' ',' ','*',' ','*'),
(' ',' ','*','*','*'),
(' ',' ',' ','*',' '),
(' ',' ','*',' ',' ')
,
(' ','*','*','*','*'),{символ'10'}
('*','*','*',' ','*'),
(' ','*','*',' ','*'),
(' ','*','*',' ','*'),
(' ','*','*','*','*')
) ;
var TChars:char;
TChars:a;
aa:array[1..5,1..5]of char;
a,i,j:integer;
begin
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
writeln('Введите символ от 1 до 10');
readln(a);
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
write(aa[i,j]:3);
end;
writeln;
end;
end;
write(MyChars[a,i,j]);
writeln;
end;
end.

Вариант 2
var aa:array[1..5,1..5]of char;
b,a,i,j:integer;

begin
for i:=1 to 5 do
for j:=1 to 5 do
aa[i,j]:=' ';
repeat
writeln('Введите символ от 1 до 10');
readln(a);
until a=a;
begin
begin
if (a = 1) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:=' '; aa[1,4]:=' '; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:=' '; aa[2,4]:='*'; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:=' '; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:=' '; aa[5,4]:=' '; aa[5,5]:='*';
end;
begin
if (a = 2) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:=' '; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:=' '; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:=' '; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:='*'; aa[4,5]:=' ';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:=' '; aa[5,4]:='*'; aa[5,5]:='*';
end;
begin
if (a = 3) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:=' '; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:=' '; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:=' '; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:=' '; aa[5,4]:='*'; aa[5,5]:='*';
end;
begin
if (a = 4) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:=' '; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:=' '; aa[5,4]:=' '; aa[5,5]:='*';
end;
begin
if (a = 5) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:=' ';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:='*'; aa[5,4]:='*'; aa[5,5]:='*';
end;
begin
if (a = 6) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:=' ';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:='*'; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:='*'; aa[5,4]:='*'; aa[5,5]:='*';
end;
begin
if (a = 7) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:=' '; aa[2,4]:=' '; aa[2,5]:=' ';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:=' '; aa[3,4]:='*'; aa[3,5]:=' ';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:=' '; aa[4,5]:=' ';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:='*'; aa[5,4]:=' '; aa[5,5]:=' ';
end;
begin
if (a = 8) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:='*'; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:='*'; aa[5,4]:='*'; aa[5,5]:='*';
end;
begin
if (a = 9) then
aa[1,1]:=' '; aa[1,2]:=' '; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:=' '; aa[2,2]:=' '; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:=' '; aa[3,3]:='*'; aa[3,4]:='*'; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:=' '; aa[4,3]:=' '; aa[4,4]:='*'; aa[4,5]:=' ';
aa[5,1]:=' '; aa[5,2]:=' '; aa[5,3]:='*'; aa[5,4]:=' '; aa[5,5]:=' ';
end;
begin
if (a = 10) then
aa[1,1]:=' '; aa[1,2]:='*'; aa[1,3]:='*'; aa[1,4]:='*'; aa[1,5]:='*';
aa[2,1]:='*'; aa[2,2]:='*'; aa[2,3]:='*'; aa[2,4]:=' '; aa[2,5]:='*';
aa[3,1]:=' '; aa[3,2]:='*'; aa[3,3]:='*'; aa[3,4]:=' '; aa[3,5]:='*';
aa[4,1]:=' '; aa[4,2]:='*'; aa[4,3]:='*'; aa[4,4]:=' '; aa[4,5]:='*';
aa[5,1]:=' '; aa[5,2]:='*'; aa[5,3]:='*'; aa[5,4]:='*'; aa[5,5]:='*';
end;
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
write(aa[i,j]:3);
end;
writeln;
end;
end;
end.


Добавлено через 3 мин.
Во втором варианте почему-то всё время 10..... не зависимо от того: присутствуют операторы repeat и until или нет.
Федосеев Павел
program test;

type
TChar = array [1..5, 1..5] of char; {один символ}
TChars = array [1..10] of TChar; {символы от 1 до 10}

const
MyChars: TChars = (
(
(' ', ' ', ' ', ' ', '*'), {символ'1'}
(' ', ' ', ' ', '*', '*'),
(' ', ' ', '*', ' ', '*'),
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', ' ', ' ', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'2'}
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', ' ', '*', ' '),
(' ', ' ', '*', ' ', ' '),
(' ', ' ', '*', '*', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'3'}
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', '*', '*', '*'),
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', '*', '*', '*')),
(
(' ', ' ', '*', ' ', '*'),{символ'4'}
(' ', ' ', '*', ' ', '*'),
(' ', ' ', '*', '*', '*'),
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', ' ', ' ', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'5'}
(' ', ' ', '*', ' ', ' '),
(' ', ' ', '*', '*', '*'),
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', '*', '*', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'6'}
(' ', ' ', '*', ' ', ' '),
(' ', ' ', '*', '*', '*'),
(' ', ' ', '*', ' ', '*'),
(' ', ' ', '*', '*', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'7'}
(' ', ' ', ' ', ' ', '*'),
(' ', ' ', ' ', '*', ' '),
(' ', ' ', '*', ' ', ' '),
(' ', ' ', '*', ' ', ' ')),
(
(' ', ' ', '*', '*', '*'),{символ'8'}
(' ', ' ', '*', ' ', '*'),
(' ', ' ', '*', '*', '*'),
(' ', ' ', '*', ' ', '*'),
(' ', ' ', '*', '*', '*')),
(
(' ', ' ', '*', '*', '*'),{символ'9'}
(' ', ' ', '*', ' ', '*'),
(' ', ' ', '*', '*', '*'),
(' ', ' ', ' ', '*', ' '),
(' ', ' ', '*', ' ', ' ')),
(
(' ', '*', '*', '*', '*'),{символ'10'}
('*', '*', '*', ' ', '*'),
(' ', '*', '*', ' ', '*'),
(' ', '*', '*', ' ', '*'),
(' ', '*', '*', '*', '*')));

var
a: char;
i, j: integer;
begin
writeln('Введите символ от 1 до 10');
readln(a);
writeln;
for i := 1 to 5 do
begin
for j := 1 to 5 do
Write(MyChars[Ord(a) - Ord('0')][i, j]);
writeln;
end;
end.
bel100
Спасибо Павел огромное! Просто онлайн консультации раз в месяц, а у меня двусменная работа... Только один раз за 5 месяцев совпало!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.