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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2009, 01:16   #11
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

и каким образом они будут равны? По крайней мере один из них не будет равен другим! Процедура рисования сектора, в которую вы передаете параметры A и B принимает только целые числа!
Как вы разделите 360, например, на 11, чтобы получились 11 ЦЕЛЫХ чисел, которые в сумме давали бы 360?

Последний раз редактировалось Alex_FF; 28.12.2009 в 01:26.
Alex_FF вне форума Ответить с цитированием
Старый 28.12.2009, 02:16   #12
Zugelman
Пользователь
 
Регистрация: 08.04.2009
Сообщений: 50
По умолчанию

я думаю тут проще не 360 делить на N а N через формулу окружности сделать круг секторным.. может это и сработает.. код не приведу т.к давно уже не прогал, проходил мимо)
Zugelman вне форума Ответить с цитированием
Старый 28.12.2009, 11:00   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вариант Alex_FF (из пост #2) имеет две ошибочки.
1) накопление погрешности, в результате которой, последний сектор получается НЕПРОПОРЦИОНАЛЬНО большим!! рекомендую попробовать программу при N, например, равным 37...
2) ошибочка возникающая изредка - последний и первый сектор могут быть одного цвета (это не проверяется в программе)


Поэтому выкладываю свой вариант (это чуть подправленный вариант Alex_FF):
Код:
uses
    Crt, Graph;

var
   Gd, Gm : integer;
   C, PrevColor, FirstColor, N, A, B, W: Integer;
   RealAngle, RealDelta : double;
begin
     Randomize;
     WriteLn('Enter number of sectors');
     ReadLn(N);
     Gd:=Detect;
     InitGraph(Gd,Gm,'');
     if GraphResult <> GrOK then Exit;
     A := 0;
     B := 0;
     W := N;
     PrevColor := -1;
     RealDelta := 360 / N;
     RealAngle := 0;
     while W > 0 do
     begin
          A := round(RealAngle);
          RealAngle := RealAngle + RealDelta;
          if W = 1 then B := 360 else B := round(RealAngle);

          if W = N then
              begin
                 {запомним цвет первого сектора}
                 C := 1+Random(15);
                 FirstColor := C;
               end
          else
            if W = 1 then
               begin
                 repeat
                    C := 1+Random(15)
                 until (C<>PrevColor) or (C<>FirstColor);
               end
            else  begin
                 repeat
                    C := 1+Random(15)
                 until (C<>PrevColor);
            end;
          PrevColor := C;
          SetFillStyle(1, C);
          Sector(320, 240, A, B, 240, 240);
          Dec(W);
     end;
     Circle(320, 240, 240);
     ReadKey;
     CloseGraph;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.12.2009, 16:59   #14
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вариант Alex_FF (из пост #2) имеет две ошибочки.
1) накопление погрешности, в результате которой, последний сектор получается НЕПРОПОРЦИОНАЛЬНО большим!! рекомендую попробовать программу при N, например, равным 37...
2) ошибочка возникающая изредка - последний и первый сектор могут быть одного цвета (это не проверяется в программе)
эти ошибочки я видел, я всего лишь немного подправил код от Asira.
А об этих ошибках она ничего не писала, значит смысла их исправлять не было, т. к. она их не замечает

я просто пытался ей доказать, что если 360 не делится нацело на N, то по крайней мере один сектор будет отличаться от других, и поэтому одинаковыми они все не будут...
но наверное я ее не убедил...

Последний раз редактировалось Alex_FF; 28.12.2009 в 17:05.
Alex_FF вне форума Ответить с цитированием
Старый 28.12.2009, 18:37   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я просто пытался ей доказать, что если 360 не делится нацело на N, то по крайней мере один сектор будет отличаться от других, и поэтому одинаковыми они все не будут...
но наверное я ее не убедил...
хм... может и правильно, что не убедил?
посмотри, в моём варианте сектора НЕОДИНАКОВЫЕ (причём могут быть все разные), но отличия на доли градуса. включая и последний сектор. Поэтому зрительно это НЕ ВИДНО!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.12.2009, 20:59   #16
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Alex_FF
Я НЕСКОЛЬКО РАЗ ПИСАЛ ПРО ПОГРЕШНОСТЬ В ИЗМЕРЕНИЯХ... ПОМОЕМУ ЭТО ТЫ САМ НЕ МОГ ПОНЯТЬ ОТКУДА ОНА БЕРЁТСЯ........... И СТО РАЗ МНЕ ПЕРЕПИСЫВАЛ МОЮ ЖЕ ПРОГРАММУ .....

Serge_Bliznykov
ПРАВИЛЬНО ПОНЯЛ ЧЕГО Я ХОЧУ - НА САМОМ ДЕЛЕ В ЕГО ПРОГРАММЕ ПОГРЕШНОСТЬ НЕ ЗАМЕТНА....
Asira вне форума Ответить с цитированием
Старый 28.12.2009, 21:15   #17
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
Смех

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
хм... может и правильно, что не убедил?
посмотри, в моём варианте сектора НЕОДИНАКОВЫЕ (причём могут быть все разные), но отличия на доли градуса. включая и последний сектор. Поэтому зрительно это НЕ ВИДНО!
или у меня глаз-алмаз, или вы плохо смотрите, но я прекрасно вижу, что сектора разные! При разрешении 640x480 и один градус заметен.

Serge_Bliznykov, запустите мою программу и вашу, например, при N = 11, результат будет одинаковый

а то, что при больших N весь круг одним цветом закрашивается, то про эту проблему, как я писал раньше, ничего сказано не было, поэтому я её и не решал...

И никто меня не убедит, что сектора одинаковые (когда 360 mod N <> 0)...
Я соглашусь, что они смотряться одинаково, но это только при высоких разрешениях...
А при 640x480 я прекрасно вижу вместо прямой ступеньки из квадратов

P. S.
Цитата:
Сообщение от Asira Посмотреть сообщение
Alex_FF
Я НЕСКОЛЬКО РАЗ ПИСАЛ ПРО ПОГРЕШНОСТЬ В ИЗМЕРЕНИЯХ... ПОМОЕМУ ЭТО ТЫ САМ НЕ МОГ ПОНЯТЬ ОТКУДА ОНА БЕРЁТСЯ........... И СТО РАЗ МНЕ ПЕРЕПИСЫВАЛ МОЮ ЖЕ ПРОГРАММУ .....
Цитата:
Сообщение от Asira Посмотреть сообщение
вот как раз так у меня сделано как у вас во втором варианте но сектор пустой остаётся точнее он не пустой он чёрный и не равный всем остальным........ только что в паскале запускала
погрешность в цикле всё равно остаётся........так как тут сумма....
как быстро люди пол меняют

P. S.: Second Edition, Asira,вам модератор уже делал замечание по поводу верхнего регистра...

Последний раз редактировалось Alex_FF; 28.12.2009 в 21:26.
Alex_FF вне форума Ответить с цитированием
Старый 28.12.2009, 21:30   #18
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Alex_FF ЭТО НЕ ЛЮДИ ПОЛ МЕНЯЮТ....... ЭТО ЗА МЕНЯ ДЕВЧЁНКА ОТВЕЧАЛА, ПО МОЕЙ ПРОСЬБЕ..... ВАМ ТО КАКАЯ РАЗНИЦА ОТ КАКОГО ПОЛА СООБЩЕНИЕ НАПИСАНО!!!!!!!!!!!!!!
Asira вне форума Ответить с цитированием
Старый 28.12.2009, 21:36   #19
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
Смех

Цитата:
Сообщение от Asira Посмотреть сообщение
Alex_FF ЭТО НЕ ЛЮДИ ПОЛ МЕНЯЮТ....... ЭТО ЗА МЕНЯ ДЕВЧЁНКА ОТВЕЧАЛА, ПО МОЕЙ ПРОСЬБЕ..... ВАМ ТО КАКАЯ РАЗНИЦА ОТ КАКОГО ПОЛА СООБЩЕНИЕ НАПИСАНО!!!!!!!!!!!!!!
да никакой

просто непонятно было как к вам обращаться, когда я этот пост писал
Цитата:
эти ошибочки я видел, я всего лишь немного подправил код от Asira.
А об этих ошибках она ничего не писала, значит смысла их исправлять не было, т. к. она их не замечает
Alex_FF вне форума Ответить с цитированием
Старый 28.12.2009, 21:42   #20
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Как хотите так и обращайтесь я всё пойму...!!!!!!!!!
Asira вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль графика Asira Помощь студентам 2 27.12.2009 22:34
паскаль. графика deu4er Помощь студентам 2 18.05.2009 21:30
Паскаль графика BuTeK1 Паскаль, Turbo Pascal, PascalABC.NET 0 08.01.2009 11:01
ПАСКАЛЬ ГРАФИКА glasian Помощь студентам 19 17.06.2008 04:26