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

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

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

 
 Ответить  Открыть новую тему 
> Создать изображение в виде "1" и "0", Заполнить массив
Gl00M
сообщение 24.09.2006 17:38
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


Как уже Volvo подсказал, задача "Заполнить массив n на n по следующей схеме:"
Цитата
1111111
0111110
0011100
0001000
0011100
0111110
1111111
решается давольно таки легко...
а как решить задачу по схеме:
Цитата
111101111
111000111
110000011
100000001
000111000
100000001
110000011
111000111
111101111


P.S. Вот что подсказал по поводу первой:
Код
function min(a, b: integer): integer;
begin
  min := a; if b < a then min := b;
end;
function max(a, b: integer): integer;
begin
  max := a; if b > a then max := b;
end;
begin
  ...
  For i:=1 to n do begin
    for j := min(1 + i - 1, n - i + 1) to max(1 + i - 1, n - i + 1) do
      a[i, j] := 1;
  end;
  { ... и печатай матрицу ... }
  ...
end.

За что ему спасибо! smile.gif

И, кто поможет мне, тоже отдельная благодарностЬ! smile.gif)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.09.2006 17:42
Сообщение #2


Гость






Gl00M
Я тебе уже и по этому поводу подсказал, обнови страницу smile.gif
 К началу страницы 
+ Ответить 
Gl00M
сообщение 24.09.2006 17:45
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


О! Точно! Еще раз спасибо!
Но, для кого интересно, вот что подсказал Volvo (а вдруг кому-нить понадобиться):
Код

var T: integer;
...
  T := (n div 2) + (n mod 2);
  for i := 1 to n do begin
    for j := 1 to n do begin
      if i <> T then begin
        if (j < ( T - (i-1)) ) or (j > ( T + (i-1)) ) then begin
          a[i, j] := 1; a[n - i + 1, j] := 1;
        end
      end
      else begin
        { Здесь проставь сколько тебе нужно единиц в средней строке (добавится еще одно условие) }
      end
    end;
  end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.09.2006 17:55
Сообщение #4


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

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

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


У меня вот что вышло :

uses crt;

const

n = 9;

type

TMx = array[1..n, 1..n] of byte;

function GetMatrix: TMx;
var
i, j: Integer;
r: TMx;
begin

FillChar(r, sizeof( r ), 1);

for i := 1 to n div 2 + 1 do
for j := (n div 2 + 1) - pred(i) to (n div 2 + 1) + pred(i)
do r[i, j] := 0;

for i := n div 2 + 2 to n do
for j := i - n div 2 to n - ( i - n div 2 - 1)
do r[i, j] := 0;

GetMatrix := r;

end;

procedure Print(mx: TMx);
var
i, j: Integer;
begin
for i := 1 to n do begin
writeln;
for j := 1 to n do
write(mx[i, j]:2);
end;
end;

begin
clrscr;
Print(GetMatrix);
readln;
end.


Только в середину надо вставить единички, ибо как это в цикле сделать ума не приложу ...

что-то я припозднился unsure.gif


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


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


Мда.. вопрос был снят до того момента, как преподша не посмотрела... sad.gif
Вощем.. дала она задание сделать вот такой рисунок (ей все равно, как разных n он будет отображаться)..
вот:
Цитата

111111111
110000011
110000011
111111111
000011000
001011010
000111100
000011000
000011000

Знаю, что рисунок отличается от предыдущего (см. пост #1) незначительно, но я уже всю голову сломал над ним..
Хелп ми, Плиззз! smile.gif

Сообщение отредактировано: Gl00M - 27.09.2006 17:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.09.2006 17:29
Сообщение #6


Гость






Gl00M, я не понял, что происходит... На Винограде ты напечатал одно (см. внимательно третью строку картинки), у нас - другое... Какой вариант считать верным? blink.gif
 К началу страницы 
+ Ответить 
Gl00M
сообщение 27.09.2006 18:03
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


Подправил. Извиняюсь за ошибку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.09.2006 18:12
Сообщение #8


Гость






...
k: integer;
...

begin

for i := 1 to n do begin
if i <= n div 2 then
for j := 1 to n do begin
if (i = 1) or (i = (n div 2)) then a[i, j] := 1
else if (j < 3) or (j > n - 2) then a[i, j] := 1
end
else begin
for j := 0 to 1 do a[i, (n div 2) + j + 1] := 1;
k := i - (n div 2);
if (k > 1) and (k < 4) then begin
a[i, (n div 2) + (n mod 2) + (3 - k) + 2] := 1;
a[i, (n div 2) + (n mod 2) - (3 - k) - 1] := 1;
end;
end;
end;
...

?
 К началу страницы 
+ Ответить 
Gl00M
сообщение 5.11.2006 21:35
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


Привет всем еще раз!
Вот, у меня опять не получается рисунок! sad.gif((
Надо: нарисовать сердечко! smile.gif

Заранее спасибо! ))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 5.11.2006 21:47
Сообщение #10


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


можешь здесь нарисовать, какое?
а то я могу много вариантов придумать...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Gl00M
сообщение 5.11.2006 21:58
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Евгений

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


Да мне любой, но ща попробую.. smile.gif
Код

001000000000100
011110000011110
111111000111111
111111101111111
111111111111111
011111111111110
001111111111100
000111111111000
000011111110000
000001111100000
000000111000000
000000010000000

ну, вот как-то так.. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 5.11.2006 23:27
Сообщение #12


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Код, передал Volvo (у него временные проблемы с провайдером)

...

const
lines = 12;
n = 15;

var
a: array[1 .. lines, 1 .. n] of integer;
i, j, k: integer;

begin

for i := 1 to 5 do
for k := 1 to 2 * i do begin

if (3 - i) + k >= 1 then begin
a[i, (3 - i) + k] := 1;
a[i, n - ((2 - i) + k)] := 1;
end;

end;

for i := 2 to lines div 2 + 2 do
for j := i to n - i + 1 do a[4 + i, j] := 1;

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

end.


(С)Volvo


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 12.08.2025 6:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"