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


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


main() {

long N;

printf("\n Введите натуральное число - ");

scanf("%ld",&N);

if((N % 2)==0) /* Если число N - четное */

{

proba(0,0,l,l,N);

proba(0,0,0,0,N);

proba(1,1,1,1,N) ;

}

else /* Если число N - нечетное */

{ proba(0,0,0,l,N);

proba(0,l,l,l,N); } }

void proba(int al,int bl,int cl,int dl,long N)

/* Подпрограмма перебора вариантов */

{ int a,b,c,d,q; long sl,s2,s3;

q=floor(sqrt(N)+.5);

/* Определение верхней границы */

for(a=al; a<=q; a+=2)

{

sl=a*a;

for(b=bl; b<=q; b+=2)

{

s2=sl+b*b;

for(c=cl; c<=q; c+=2)

{

s3=s2+c*c;

for(d=dl; d<=q; d+=2)

if (s3+d*d=N)

{

printf("\n Искомые слагаемые :");

printf("\n a=%d b=%d c=%d d=%d",a,b,c,d);

getch();

exit(0);

}

}

}

}

return;

}

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

program razlojenie;

{ Разложение числаг на сумму квадратов }

var

N:longint;

procedure proba(al,bl,cl,d1:integer; N:longint);

{ Подпрограмма перебора вариантов }

var

a,b,с,d,q:integer; s1,s2,s3:longint;

begin

q:=round(sqrt(N)); {Определение верхней границы }

a:=al;

while a<=q do begin

sl:-a*a,- b:-b1;

while b<=q do begin s2:=sl+b*b;

c:=cl;

while c<=q do begin s3:=s2+c*c;

d:=dl; while d<=q do begin

if(s3+d*d=N) then begin

writeln('Искомые слагаемые :');

writeln('а=',а,' b=',b,' c=',c,' d=',d);

readln;

exit;

end;

inc(d,2);

end; inc(c,2);

end;

inc(b,2);

end; inc(a,2);

end;

end;

begin

write('Введите натуральное число - ');

readln(N);

if odd(N) then begin { Если число N - нечетное }

proba(0,0,0,l,N);

proba(0,1,1,1,N);

end else begin { Если число N - четное }

proba (0, 0,1,1,N) ;

proba(0,0,0,0,N);

proba(1,1,1,1,N);

end;

end.

Задание 2.27. Анализ взаимного расположения точки и треугольника

Составить программу, которая определяет, лежит ли точка с заданными координатами внутри или вне треугольника. В реальности возможны три ситуации: либо точка принадлежит хотя бы одной из сторон (то есть находится на границе треугольника), либо она расположена строго внутри, либо -строго снаружи.




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