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

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

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

> ЭлектрическаяЦепь через рекурсию
Zac
сообщение 15.12.2007 14:49
Сообщение #1


Новичок
*

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

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


Доброго времени суток. Вот ломаю голову на рекурсией.. чтото наваял Да не то как обычно.. Показывает только одну часть цепи с 8 позиции курсора.

Задача: Составить рекурсивный алгоритм, который вычерчивает на экране схему электрической цепи .Порядок цепи (количество сопротивлений R2) должен вводиться во время работы программы. (картинка цепи в приложении)


Uses CRT;
Function chast(r2,x:integer):integer;
   var y:integer;
  begin
   y:=2;
   GotoXY(x,y);
   writeln(CHR($C2),CHR($C4),CHR($DB),CHR($DB),CHR($C4),CHR($C2));
   GotoXY(x,y+1);
   writeln(CHR($DB));
   GotoXY(x,y+2);
   writeln(CHR($DB));
   GotoXY(x,y+3);
   writeln(CHR($C1),CHR($C4),CHR($DB),CHR($DB),CHR($C4),CHR($C1));
   GotoXY(x,y);
   chast:=r2;

  end;

var r2,x:integer;
begin
  CLRSCR;
  x:=1;
  repeat
    write('R2 = ');
    Readln(r2);
   Until r2>0;

   if r2=1 then  chast(r2,x)
    else
      begin
       x:=x+7;
       chast(chast(r2,x)-1,x);
       end;
    readln;
   end.



Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
klem4
сообщение 15.12.2007 15:36
Сообщение #2


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

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

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


нужно именно в текстовом режиме ?


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


Новичок
*

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

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


ну не обязательно навреное , просто я думал в текстовом режиме проще smile.gif.. или я ошибаюсь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zac
сообщение 16.12.2007 18:45
Сообщение #4


Новичок
*

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

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


Сегодня опять просидел над этой задачей. ка кбы я не менял чтото всегда только 2 или 1 часть ресует sad.gif и все тут.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 16.12.2007 21:14
Сообщение #5


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

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

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


как-то так ...
uses crt, graph;

var
  gd, gm: Integer;

procedure CircuitPart(lx, ly, deep: Integer);
begin
  if deep > 0 then begin
    line(lx, ly, lx + 20, ly);
    line(lx + 20, ly - 5, lx + 20, ly + 5);
    line(lx + 20, ly - 5, lx + 40, ly - 5);
    line(lx + 20, ly + 5, lx + 40, ly + 5);
    line(lx + 40, ly - 5, lx + 40, ly + 5);
    line(lx + 40, ly, lx + 60, ly); 
    line(lx + 60, ly, lx + 60, ly + 20);
    line(lx + 55, ly + 20, lx + 65, ly + 20);
    line(lx + 55, ly + 20, lx + 55, ly + 40);
    line(lx + 65, ly + 20, lx + 65, ly + 40);
    line(lx + 55, ly + 40, lx + 65, ly + 40);
    line(lx + 60, ly + 40, lx + 60, ly + 60);
    line(lx + 60, ly + 60, lx + 40, ly + 60);
    line(lx + 40, ly + 55, lx + 40, ly + 65);
    line(lx + 40, ly + 55, lx + 20, ly + 55);
    line(lx + 40, ly + 65, lx + 20, ly + 65);
    line(lx + 20, ly + 55, lx + 20, ly + 65);
    line(lx + 20, ly + 60, lx, ly + 60);

    CircuitPart(lx + 60, ly, deep - 1);
  end;
end;

begin
  initgraph(gd, gm, '');

  CircuitPart(100, 100, 8);

  readkey;
  closegraph;
end.


Прикрепленное изображение



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


Новичок
*

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

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


Работает... теперь я понял как надо делать, и что лучше работать с графикой чем с непокроными символами.
Спаисбо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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