Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 21:29   #1
niziriska
Пользователь
 
Аватар для niziriska
 
Регистрация: 28.07.2008
Сообщений: 28
По умолчанию Гексагональная раскладка

Ребят! срочно помощь нужна!!!
реализация такой рограммы..
Сколько кругов радиуса r разместиться в круге радиуса R

алгоритм придумали. вроде логика правильная.. но от с реализацие....


в общем думаем будет 2 цикла, в центр большого кладем круг малый. номер шага +1 счетчик кругов +1. сравниваем не больше ли r>R если нет то по гексагональной раскладке еще 6 кругов добавляем вокруг первого. номер шага + 2 счетчик кругов +2*3
далее все эт продолжается пока r*(количесво шагов) не станет больше радиуса большего круга. и вычитаем последний шаг(все его круги)


вот! кто нибудь помогите плиз!
Жизнь коротка... нужно успеть все!
niziriska вне форума Ответить с цитированием
Старый 12.05.2009, 10:06   #2
niziriska
Пользователь
 
Аватар для niziriska
 
Регистрация: 28.07.2008
Сообщений: 28
По умолчанию

Учитесь!

Код:
program radius;
uses crt;
var k,s,r,r2,dr,m: real;i,n:integer;
begin

 readln(r);
 readln(r2);
 n:=1; k:=1; s:=1;
 while (r+(s-1)*2*r)<=r2 do
   begin
     s:=s+1;
     n:=n+1;
     k:=k+(6*n-6);
   end;
 begin
   if n mod 2 = 0
   then
     begin
      m:=sqrt(sqr((s-1)*2*r)-sqr((n-1)*r));

      for i:=1 to n do

      begin
        dr:=sqrt(sqr(r*(2*i-1))+sqr(m));
           if dr+r <=r2
            then k:=k+1
            else writeln('k=',k);
      end;
      end
   else
   begin
      m:=sqrt(sqr((s-1)*2*r)-sqr((n-1)*r));
      for i:=1 to n do
       begin
        dr:=sqrt(sqr(2*r*i)+sqr(m));
        if (dr+r) <= r2
          then k:=k+1
          else writeln('k=',k);
       end;

   end;
 end;
writeln('s=',s);
writeln(n);
readln;
readln;
end.
Жизнь коротка... нужно успеть все!
niziriska вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскладка клавиатуры SERG1980 Общие вопросы Delphi 4 05.07.2010 10:41
Не переключается раскладка Puxtak Свободное общение 20 15.03.2009 00:15
Русская раскладка в bat-файлах snake-as Microsoft Office Excel 3 16.10.2008 17:59
Раскладка Cabal777 Помощь студентам 3 23.12.2007 15:45
Раскладка клавиатуры Reindeer Общие вопросы Delphi 10 21.03.2007 22:28