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

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

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

 
 Ответить  Открыть новую тему 
> Создать изображение в виде "1" и "0", Заполнить массив
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Gl00M
Я тебе уже и по этому поводу подсказал, обнови страницу smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


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

111111111
110000011
110000011
111111111
000011000
001011010
000111100
000011000
000011000

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

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


Гость






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


Новичок
*

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

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


Подправил. Извиняюсь за ошибку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;
...

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


Новичок
*

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

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


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

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


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

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

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


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


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


Новичок
*

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

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


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

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

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


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

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

Репутация: -  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

 




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