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

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

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

 
 Ответить  Открыть новую тему 
> Рекурсия и графика
Askid.BY
сообщение 11.12.2005 18:05
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

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


Знаяит вопрос такой, а точнее задача:
Составить рекурсивное определение функции(процедуры) сформировывающую матрицу вида
*****
***
*
Как обычно она решается я знаю,но как рекурсивно?
Код
uses
crt;
var
i:byte;
n,x:integer;
begin
writeln('Vvesti znachok');
readln(n);
ClrScr;
i:=3;
if i=3 then writeln(n,n,n,n,n);
i:=i-1;
if i=2 then writeln(' ',n,n,n );
i:=i-1;
if i=1 then writeln(' ',n);
if i=0 then writeln ;
readkey;
end.


И ещё если нетрудно какие мысли по задаче:
Составить программу вывода на экран окружности.При нажатии клавиши КУРСОР вправо окружность вращается вокруг своего диаметра слева направо,при нажатии клавиши КУРСОР влево - справа налево.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 11.12.2005 18:12
Сообщение #2


Смотрю...
*****

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

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


Код

Procedure GoGo(ii : Integer);
var j : Byte;
Begin
  If ii>0 then
  Begin
    For j:=1 to ii do Write('*');
                Writeln;
    GoGo(ii-2);
  End;
End;


Что значит "вращается вокруг диаметра"? Может вокруг оси Y?

Сообщение отредактировано: APAL - 11.12.2005 18:13


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 11.12.2005 18:13
Сообщение #3


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

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

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


ну во первых твой вариант тоже странновытый какой-то

вот обычный не рукурсивный вариант, щас сделаем с рекурсией :

Код

uses crt;

type
   TMx = array[1..10, 1..10] of integer;
var
   mx : TMx;
   t : integer;

procedure Input(var x : TMx; n : integer);
var
   i,j : integer;
begin
   randomize;
   for i := 1 to n do begin
      writeln;
      for j := 1 to n-i+1 do begin
         x[i,j] := random(10);
         write(x[i,j]:2,' ');
      end;
   end;

end;
begin
   clrscr;
   Input(mx,10);
   readln
end.


а вот и Apal с рекурсией подоспел ;)
опоздал)

Сообщение отредактировано: klem4 - 11.12.2005 18:14


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


Гость






procedure print(count: integer; ch: char);
var i: integer;
begin
if count >= 1 then begin

for i := 1 to count do write(ch);
writeln;

print(count - 2, ch);

end;
end;

begin
print(5, '*');
end.



P.S. При чем здесь графика? blink.gif
 К началу страницы 
+ Ответить 
APAL
сообщение 11.12.2005 18:15
Сообщение #5


Смотрю...
*****

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

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


По моему я поторопился... rolleyes.gif

klem4 : И я ... зато у автора теперь куча вариантов разных smile.gif)

Сообщение отредактировано: klem4 - 11.12.2005 18:23


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Askid.BY
сообщение 11.12.2005 20:51
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

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


Да но в данных случаях получается
*****
***
*
а надо(см в прикреплённом файле)


Прикрепленные изображения
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 11.12.2005 21:16
Сообщение #7


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

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

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


получается так, как ты дал в первоначальном задании mad.gif


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


Гость






var
n: integer;

procedure print(count: integer; ch: char);
var i: integer;
begin
if count >= 1 then begin

for i := 1 to (n - count) div 2 do write(' ');
for i := 1 to count do write(ch);
writeln;

print(count - 2, ch);

end;
end;

begin
n := 5;
print(n, '*');
end.
 К началу страницы 
+ Ответить 

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

 



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