Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Закрытая тема
 
Опции темы Опции просмотра
Старый 27.06.2011, 18:39   #1 (permalink)
Andrei_F
Новичок
 
Регистрация: 27.06.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Нужна помощь в решении двух задач

Добрый день. Необходима помощь в решении двух задач. С остальными справился, но с этими двумя большие затруднения.
1) Даны координаты x[ i ], y[ i ] (i = 1, . . ,n) точек (n<=100) A[ 1 ], . . ,A[ n ] на плоскости. Найти минимальную площадь кольца с центром в начале координат. Внутри и на границе находятся точки, расположенные на расстоянии от начала координат не более чем на r (r-задано).
2) Сформировать массив y=(y[ i , j ]) размера n*n (n<=20), элементы которого вычисляются по формуле y=((-1)^ i+j)*(z^i+j)/((i*j)!), где z-заданное число.
Или хотя бы разъяснение как их решить на языке Паскаль. Заранее благодарен.
Andrei_F вне форума  

Старый 27.06.2011, 18:39
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего по этим ссылкам содержится много полезной для вас информации

Требуется срочная помощь в решении задач по электротехнике
Нужна помощь в решении задачи
Нужна помощь в решении задач на Паскале

Старый 27.06.2011, 21:02   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Andrei_F Посмотреть сообщение
Добрый день. Необходима помощь в решении двух задач. С остальными справился, но с этими двумя большие затруднения.
1) Даны координаты x[ i ], y[ i ] (i = 1, . . ,n) точек (n<=100) A[ 1 ], . . ,A[ n ] на плоскости. Найти минимальную площадь кольца с центром в начале координат. Внутри и на границе находятся точки, расположенные на расстоянии от начала координат не более чем на r (r-задано).
Писать программу не буду, задачка - элементарная, сами справитесь. Итак:
1. Все точки располагаются внутри круга заданного радиуса - переобозначим его для удобства Rmax. Эта величина дана.
2. Требуется найти расстояние до наиболее близкой к началу координат точки. Обозначим это расстояние Rmin. Делается это так:
а) Строим массив r[i] = корень квадратный из (x[i]^2 + y[i]^2).
б) Стандартной процедурой находим минимальный элемент полученного массива. Он и будет искомым значением Rmin.
3. Находим площадь кольца: S=Pi*(Rmax^2 - Rmin^2).
Всё!

Цитата:
2) Сформировать массив y=(y[ i , j ]) размера n*n (n<=20), элементы которого вычисляются по формуле y=((-1)^ i+j)*(z^i+j)/((i*j)!), где z-заданное число.
Или хотя бы разъяснение как их решить на языке Паскаль. Заранее благодарен.
Тут я прежде всего хочу заметить, что если Вы не напутали и в знаменателе действительно находится (i*j)!, то Ваши преподы - люди не без юмора. По моим оценкам, при i=j=n=20 указанная величина (400!) выражается где-то 800-значным числом. Лихо... Но, впрочем, Паскаль способен такое перемолоть, только тут надо аккуратно с форматами. В остальном же задачка никаких сложностей не представляет:
Код:
VAR
 Y:Array[1..20,1..20] of Extended;
 Z:Real;
 N:Byte;
 i,j:Integer;

function Nfact(n:LongInt):Extended;
VAR
  i:LongInt;
  fact:Extended;
BEGIN
  IF n=0 THEN fact:=1 ELSE
    BEGIN
      fact:=1;
      FOR i:=1 TO n DO
        fact:=fact*i;
    END;
  Nfact:=fact;
END;

Function Sign(M:Byte):ShortInt;
begin
 If (M mod 2) = 0 then Sign:=1 else Sign:=-1;
end;

function X2np(X:Extended; n:WORD):Extended;
Var i:WORD;
    Y:Extended;
BEGIN
  IF n=0 THEN X2np:=1 ELSE
  IF n=1 THEN X2np:=X ELSE
  BEGIN
    Y:=X;
    FOR i:=2 TO n DO Y:=Y*X;
    X2np:=Y;
  END;
END;

BEGIN
 Write('N (<21) = ');
 Readln(N);
 Write('Z= ');
 Readln(Z);
 For i:=1 to N do
  For j:=1 to N do
   begin
    Y[i,j]:=(Sign(i)+j)*(X2np(Z,i)+j)/Nfact(i*j);
    Writeln('Y[',i:2,',',j:2,']= ',Y[i,j]);
   end;
 Readln
END.
Vladimir_S вне форума  
Старый 27.06.2011, 21:59   #3 (permalink)
Andrei_F
Новичок
 
Регистрация: 27.06.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо огромное вам за помощь.
Andrei_F вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:38.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.