Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите написать небольшую програмку
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Acer
Буду очень благодарен, если вы хоть как-то мне поможете с написанием данной программы:
задача:"Шахматная Доска"
Целочисленный массив K размером m x n заполнить нулями и единицами, расположив их в шахматном порядке.
(смысл: при запуске проги в окне должны появиться строчки с чередованием единиц и нулей
10101010
01010101
и т.д.
причем, количество строк и столбцов все время меняется и ограничено десятью).


Заранее всем благодарен!
klem4
Поиском не пробовал воспользоваться ? Задача решалась ...
volvo
Так что-ли?
var
i, j, n: integer;
start: integer;

begin
write('n = '); readln(n);
for i := 1 to n do begin
start := byte(odd(i));
for j := 1 to n do begin
write(start:2); start := 1 - start;
end;
writeln;
end;
end.



Добавлено через 1 мин.
P.S.
странно, вообще-то шахматная доска по-моему квадратная... Пойду проверю...
Acer
klem4, спасибо, но я не совсем понял то, что в программе

volvo,Спасибо.
да, доска квадратная, но у нас не n x n, а m x n.
Тоесть главное, чтобы в шахматном порядке было.
и еще, как объяснил учитель и m и n должны быть в программе и задаваться random-ом от 1 до 10,
т.е может быть одна строчка чисел, две и т.д, то же самое и со столбцами.
volvo
Тогда вот так:
var
i, j, n, m: integer;
start: integer;

begin
randomize;
m := random(10) + 1;
n := random(10) + 1;
for i := 1 to m do begin
start := byte(odd(i));
for j := 1 to n do begin
write(start:2); start := 1 - start;
end;
writeln;
end;
end.

Acer
Спасибо!
З.Ы. только что такое odd?
volvo
Функция такая... Вернет True, если ее аргумент - нечетный...
Acer
Цитата
Функция такая... Вернет True, если ее аргумент - нечетный...

Хм....в смысле true?
volvo
Чего, про тип Boolean никогда не слышал? Допустим, ты сравниваешь 2 числа:
If (a > b) then ...


Вот результат вычисления того, что в скобках - это какого типа? Логического, правда? Истина или Ложь, True или False в записи на Паскале...
Acer
Ааа, понял.

Цитата
Чего, про тип Boolean никогда не слышал?

Сразу не врубился.

Огромное Спасибо, Владимир.
Респект!
Не ожидал, что так быстро поможете.
Еще раз Спасибо!
Acer
Владимир, не могли бы вы мне еще помочь.
Можно ли сделать эту программу без odd и start, как можно более примитивно.
Заранее Спасибо.
volvo
var
i, j, n, m: integer;

begin
randomize;
m := random(10) + 1;
n := random(10) + 1;
for i := 1 to m do begin

for j := 1 to n do
write(((i + j + 1) mod 2):2);

writeln;
end;
end.

Главное - чтобы потом тебе не понадобилось сделать программу без циклов и Randomize...
Acer
Спасиб.
А без циклов сложнее и длиннее будет?
Ozzя
Проще:
a[1,1]:=1;
a[1,2]:=0;
...
a[1,n]:=0;
a[2,1]:=0;
...
a[2,1]:=1;
...
И так много раз, в зависимости от размера массива: Кол-во операторов = m*n






Добавлено через 2 мин.
Цитата(volvo @ 21.05.2007 21:02) *

Главное - чтобы потом тебе не понадобилось сделать программу без циклов и Randomize...

lol.gif rolleyes.gif lol.gif
Sto
Цитата(Ozzя @ 22.05.2007 10:06) *

Проще:
a[1,1]:=1;
a[1,2]:=0;
...
a[1,n]:=0;
a[2,1]:=0;
...
a[2,1]:=1;
...
И так много раз, в зависимости от размера массива: Кол-во операторов = m*n
Добавлено через 2 мин.

lol.gif rolleyes.gif lol.gif

m и n задаются Randomize
Ozzя
Sto
Я не об этом. no1.gif
Я об этом -

Цитата
Volvo
Главное - чтобы потом тебе не понадобилось сделать программу без циклов


Цитата
Acer
А без циклов сложнее и длиннее будет?
Sto
Цитата(Ozzя @ 22.05.2007 10:21) *

Sto
Я не об этом. no1.gif
Я об этом -

А, ну тогда да!!!
Acer
Подскажите, что такое mod?
write(((i + j + 1) mod 2):2);
Заранее Спасибо.
Sto
Цитата(Acer @ 22.05.2007 16:32) *

Подскажите, что такое mod?
write(((i + j + 1) mod 2):2);
Заранее Спасибо.

Mod - вычисляет остаток, полученый при выполнении целочисленного деления.
Например:
10 mod 5 = 0; Потому что 10/5 = 2, нет остатка;
11 mod 5 = 1; Потому что 11/5 = 2.2, а ближайшее целое число которое делится на 5 без остатка, это 10 в
результате 11-10=1;
25 mod 10 = 5; Потому что 25/10 = 2.5, а ближайшее целое число которое делится на 10 без остатка, это 20, в
результате 25-20=5;
Acer
Спасибо за объяснение. smile.gif
Acer
Хз...тогда другой вопрос: смысл mod в этой проге?
compiler
Цитата(Acer @ 22.05.2007 18:15) *
Хз...тогда другой вопрос: смысл mod в этой проге?
проверяем на четность число...
Acer
Так у нас единицы и нули.
На четность столбцы и строки проверяют, да?
Sto
Идет вывод 1 и 0
for i := 1 to m do begin

for j := 1 to n do
write(((i + j + 1) mod 2):2);

Например:
i = 1; j = 1
i + j + 1 = 1 + 1 + 1 = 3
3 mod 2 = 1 так как 3/2 = 1,5 тогда ближайшее число которое делится на 2 это 2, 3 - 2 = 1
Выводится 1

i = 1; j = 2
i + j + 1 = 1 + 2 + 1 = 4
4 mod 2 = 0 так как 4/2 = 2 тогда остачи нет
Выводится 0

i = 1; j = 3
i + j + 1 = 1 + 3 + 1 = 5
5 mod 2 = 1 так как 5/2 = 2,5 тогда ближайшее число которое делится на 2 это 4, 5 - 4 = 1
Выводится 1

и так дальше.....
Acer
Потрясающе.
Я бы до такого не додумался.
Спасибо, ребята.
Наконец-то разобрался во всем!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.