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


Задачи,советы и ответы - часть 53


'обработка случаев 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 { если узел в левой полуплоскости }




- Начало -  - Назад -  - Вперед -