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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 18:17   #1
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
Вопрос надо разрезать пиццу на заданное число кусков)

Здравствуйте)прошу о помощи)
программирование только началось, мало что знаю(
пытаюсь разбираться, пользуясь всякими пособиями "для чайников", но пока что слабовато( с графическими возможностями программ вообще не работала(
вот задачка:

Дана пицца, имеющая форму круга. Разрезать ее на заданное число кусков, делая n прямолинейных разрезов ножем от края пиццы до края.

язык предпочтительнее С++, но можно паскаль)
iris_ka вне форума Ответить с цитированием
Старый 10.02.2012, 19:06   #2
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Код:
uses Graph,crt;

var
  Gd, Gm : Integer;
  Radius : Integer;
  e,n,mx,my,i,j,a,dif : Integer;
  r:integer;

begin

  clrscr;
  writeln('vvedite n -'); readln(n);


  Gd := Detect;
  InitGraph(Gd, Gm, '');
  if GraphResult <> grOk then
    Halt(1);

  mx:=320;my:=240;
  Circle(mx,my,80);
  Circle(mx,my,1);

  Setcolor(red);
  for i := 1 to n do begin
    line( mx, my, mx + trunc(80 * sin((i - 1) * (360 div n) / (180/Pi))),
                  my - trunc(80 * cos((i - 1) * (360 div n) / (180/Pi))) );
  end;
  Readln;
  CloseGraph;
end.
не проверял
rUs_LAN вне форума Ответить с цитированием
Старый 10.02.2012, 19:34   #3
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
По умолчанию

спасибо большое)
но даже по написанной программе не могу до конца понять общий алгоритм действия(
если нетрудно, пожалуйста, вкратце, поясните)
iris_ka вне форума Ответить с цитированием
Старый 10.02.2012, 19:36   #4
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

да мне думать в пятницу не охота, я эту программу в гугле нашел
rUs_LAN вне форума Ответить с цитированием
Старый 10.02.2012, 19:41   #5
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
По умолчанию

а.. понятн)
ладн, попробую разобрать, но что-то возникло такое ощущение, что не по мозгам мне это будет)
iris_ka вне форума Ответить с цитированием
Старый 11.02.2012, 10:57   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

представленный код решает чуть-чуть другую задачу.
Он из центра круга (пиццы) проводит линии разреза так, чтобы получилось N кусков (по сути алгоритм заключается в том, что круг - это 360 градусов, вот и находим нужные углы путём деления 360 на n).

в задаче TC нужно провести N разрезов (кусков будет, разумеется, не N, 2*N), ну решить её можно тем же самым способом - находить углы путём деления 360 на N

HINT. достаточно исходное N (число разрезов) умножить на 2 (чтобы получить число кусков), и вышеприведённый код решения подходит для решения данной задачи!

Последний раз редактировалось Serge_Bliznykov; 11.02.2012 в 11:00.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2012, 13:00   #7
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
По умолчанию

но таким способом я могу получить только четное количество кусков. или я неправильно поняла?)
iris_ka вне форума Ответить с цитированием
Старый 15.02.2012, 13:18   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от iris_ka Посмотреть сообщение
но таким способом я могу получить только четное количество кусков. или я неправильно поняла?)
да. точно. но Вам нужно получить не N-е число кусков (неважно, чётное или нечётное количество), вам нужно (цитирую):
Цитата:
дана пицца, имеющая форму круга. Разрезать ее на заданное число кусков, делая n прямолинейных разрезов ножем от края пиццы до края.
- т.е. нужно сделать N разрезов от края пиццы до края...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2012, 13:37   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть нюанс.
Если заданное число кусков 2*i - делать i разрезов через центр.
Если заданное число кусков 2*i+1 - делать i разрезов через центр и один разрез
на любом кусочке через любые две точки дуги.
Таким образом чуть подправив прогу из #2 получите требуемое

Один кусочек маленький будет, но условие выполено И как понял n не задается, а задается число кусков
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.02.2012 в 13:41.
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 13:40   #10
iris_ka
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 44
По умолчанию

спасиб) теперь хотя бы понятно, что именно требуется) прост в условии меня смутило "на заданное число кусков". думала, на вход программе должно подаваться это число)
iris_ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить являится ли заданное число N автоморфорным investr Microsoft Office Word 0 07.12.2011 15:44
Заданное натуральное число записать прописью lonely_soul Паскаль, Turbo Pascal, PascalABC.NET 9 29.04.2011 12:51
Значение не увеличивается на заданное число cobria2 PHP 9 29.03.2011 11:49
Программа, которая отгадывает заданное число vakich Помощь студентам 7 24.02.2009 19:13
является ли заданное натуральное число совершенным Савинова Помощь студентам 3 19.11.2008 09:51