Практика программирования (Бейсик, Си, Паскаль)


         

обработка случаев 1 и 2


'обработка случаев 1 и 2
m12:
х0 = -Y&: у0 = Y&: N& = (2 * х0)^2'координаты и номер угла

CoordToN = N& + х0 - Х&: EXIT FUNCTION
ELSE

'обработка случаев 3 и 4
х0 = Х&: у0 = -XS: N& = (2 * х0)^2 CoordToN = N& + у0 - Y&:
EXIT FUNCTION
END IF
END IF ' если узел в правой полуплоскости

IF X& <= 0 AND Y& < 0 THEN GOTO mab' случай а

IF x& >= 0 AND'YS < 0 AND ABS<Y&) >= х& THEN ' обработка случаев 2, 3
mab: х0 = -Y& +1: Y0 = -Y&: N& = (2 * хО - 1) ^2

CoordToN = N& - хО + Х&: EXIT
FUNCTION ELSE

'обработка случаев с, d

х0 = Х&: у0 = -Х& + 1: N& = (2 * х0 - 1) ^ 2

CoordToN = N& + YS - у0
END IF
END FUNCTION

Программа 2_29.с

#include <stdio.h>

#include <conio.h>

#include <math.h>
long sqr(long x);
long coord_to_n(long x,long y);

void main() { long x,y,M;

printf("\n Введите координаты узла : ");
scanf("%ld %ld",Sx,&y);

M=coord to n(x,y); .

printf("\nEro номер = %ld",M);
getch(); }

long coord_to_n(long x,long y) { long N,x0,y0;

if(x<=y) //если узел в левой полуплоскости
{
if(х>=0 && у>0) goto m12; //случай 1
if(x<0 && y>=0 && y>=labs(x)) //случай 2 {//обработка случаев 1 и 2
ml2:
х0=-у;
у0=у;
N=sqr(2*хО); //координаты и номер угла

return N+x0-x; } //обработка случаев 3 и 4

х0=х; у0=-х; N=sqr(2*х0); return N+y0-y; }

//если узел в правой полуплоскости
if(х<=0 && у<0) goto mab; //случай 2
if(x>=0 && у<0 && labs(y)>=x) //случай 3
{//обработка случаев 1, 2
mab:
x0=-y+l;
y0=-y;
N=sqr(2*х0-1);
return N-x0+x;

} //обработка случаев 3, 4

х0=х;
у0=-х+1;
N=sqr(2*x0-l);

return N+y-y0;

long sqr(long x)

{ return x*x; }

Программа 2_29.pas

program CoordToN;

var

M,x,y:longint;

function coord_to_n(x,y:longint}:longint;

var

x0,y0,N:longint;

label ml2,mab;

begin

if x<=y then { если узел в левой полуплоскости }

Содержание  Назад  Вперед