Помощь - Поиск - Пользователи - Календарь
Полная версия: Геометрическая задача с использованием функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jane
Помогите,плиз,найти ошибку... unsure.gif Вот задача:
Составьте программу построения таблицы значений функции, состоящую из N строк, при изменении аргумента от L до R (значения вводятся пользователем).Во время построения таблицы найти и напечатать в конце таблицы отдельной строкой сумму таких значений функции, которые имеют целую часть,кратную Z.
Проблема вот в чём:
Надо написать функцию, опpеделяющую, сколько точек c кооpди-
натами (X,Y) из полученной pанее таблицы попадает
внутpь области, огpаниченной окружностью...

Код
program Tabl;
var x,y,                                                     {argument, znachenie funkcii}
   L,                                                       {minimal'noe znachenie argumenta}
   R,                                                       {maximal'noe znachenie argumenta}
   T,                                                       {T-shag tablici}
   S:real;                                                  {summa znach. funkcii,kotorie imeiut celuiu chast',kratnuiu Z}
   N,                                                       {kol-vo strok v tablice}
   I,                                                       {tekusthii nomer stroki}
   Z,                                                       {chislo,na kotoroe delyatsya x}
   Kol:integer;                                             {kol-vo tochek vnutri okruzhnosti-vspomogatel'naya perem.}
   rad:real;                                                {radius ocruzhnosti}
    Function Fn(x:real):real;                            {funkciya,vichislauschaya zadannuyu funktciu}
 begin
  Fn:=1.4*x-0.3*x*x+ln(x+1)+3;
 end;
   Function Kolvo(rad:real):integer;                 {funkciya,opredelyauschaya skol'ko tochek s koord.(x,y) iz poluchennoi}
    var                                              {tablici popadet vnutr' oblasti,ogranichennoi okruzhnost'iyu}
       arg,                                          {koordinata centra okruzhnosti po x}
       ord:real;                                     {koordinata centra okruzhnosti po y}
   begin
    write('koordinata tcentra po OX arg=');                 {vivod soobscheniya na ekran}
    read(arg);                                              {vvod znacheniya arg s klaviaturi}
    write('koordinata tcentra po OY ord=');
    read(ord);                                              {vvod znacheniya ord s klaviaturi}
    write('radius okruzhnosti rad=');
    read(rad);                                              {vvod znacheniya rad s klaviaturi}
    Kol:=0;                                                 {prisvaevaem Kol nachal'noe znachenie 0}
    for I:=1 to N do begin                                  {povtorit' N raz}
 if rad>=(sqrt(sqr(x-arg)+sqr(y-ord)))                {uslovie nahozhdeniya tochek vnutri okruzhnosti}
 then inc(Kol);                                      {podschet kol-va tochek}
 end;
    Kolvo:=Kol;                                             {prisvaivaem znachenie Kol funkcii}
    end;
   begin                                                    {nachalo osnovnoi programmi postroeniya tablitci}
    s:=0;                                                   {prisvaivaem s nachal;noe znachenie 0}
    write('min znachenie argumenta L='); read(L);
    write('max znachenie argumenta R='); read(R);
    write('chislo strok N=');read(N);
    write('Z=');read(Z);
    T:=(R-L)/(N-1);                                         {schitaet shag tablici}
    for I:=1 to N do begin
    x:=L+T*I;                                               {schitaet znachenie x}
    y:=Fn(x);                                               {schitaet znachenie y}
    writeln('x=',x:6:4,'     ','y=',y:6:4);                 {vivod tablitci}
    if trunc(x) mod Z = 0 then s:=s+x;                      {summa znachenii funkcii,imeiuustchih}
   end;                                                     {celuiy chast',kratnuiy Z}
 writeln('summa znacheniy kratnih Z s=',s:6:4);
 Kol:=Kolvo(rad);
 writeln('chislo tochek vnutri okruzhnosti: ',Kol);         {vivod chisla tochek vnutri okruzhnosti}
end.
Altair
Цитата
из полученной pанее таблицы попадает
внутpь области, огpаниченной окружностью...


окружность как задается ? 3 точками?
тогда вычисление центра окружности так:

Код

Type
TELEM=extended;
Point = record
         x,y:TELEM
        end;
Procedure GetCenterCircle(a1,a2,a3:point; Var kX:telem; var ky:telem; var f:boolean);
var
ma,mb:real;
begin
ma:=(a2.y-a1.y)/(a2.x-a1.x);
mb:=(a3.y-a2.y)/(a3.x-a2.x);
kx:=(ma*mb*(a1.y-a3.y)+mb*(a1.x+a2.x)-ma*(a2.x+a3.x))/ (2*(mb-ma));
If mb<>0 then ky:=(-1/mb)*(kx-(a2.x+a3.x)/2)+ (a2.y+a3.y)/2 else
begin
 If ma<>0 then begin ky:=(-1/ma)*(kx-(a1.x+a2.x)/2)+(a1.y+a2.y)/2 end;
end
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.