MM
Mod-108 Mod-108

Прошу помочь разобраться в задаче по программированию

Прошу помочь разобраться в задаче по программированию:

Дан шар радиуса R, центр которого находится в центре координат. Определить количество точек с целочисленными координатами, находящихся на его поверхности. Ваша программа должна
•запросить целое число R (01000 then end;

N:=0;

for x:=-R to R do
for y:=-R to R do
for z:=-R to R do

if sqrt(sqr(x)+sqr(y)+sqr(z))=R then N:=N+1;

writeln(N);

end.

но паскаль почему-то ругается, что "операнды имеют неприводимые типы" в условии отсеивания, и на подсчет 1000 тратит ГОРАЗДО большее время, чем 20 сек.. .

заранее Спасибо.

ДС
Дмитрий Савушкин

1. достаточно проверить только 1/8 шара остальные координаты симетричны
2. нет смысла каждый раз извлекать корень и возводить в степень

N:=0;
RQ := Sqr(R);
for x:=0 to R do
begin
xq := sqr(x)
for y:=0 to R do
begin
yq := sqr(y);
for z:=0 to R do if xq+yq+sqr(z))=RQ then N:=N+1;
end; end;
writeln(8*N);

как видишь хорошему программисту не достаточно знать язык и уметь писать код

Диана Базанова
Диана Базанова

x:=-R, т. е. отрицательное число? а корень отрицательного числа чему равен?

А вообще эта задача решается не так, метод перебора - это самый простой и самый дебильный.

Здесь нужно составить функцию, определяющую кол-во целочисленных точек в срезе шара, и затем проинтегрировать по оси Z от -R до +R.

В общем то MatLab это кажется умеет, хотя точно не скажу, не пробовал.

программа будет на пару порядков быстрее работать

Похожие вопросы
Прошу помочь разобраться в задаче по программированию:
Очень прошу помочь с решением задачи.
Прошу помочь задача на Excel
прошу помочь разобраться!!!
прошу помочь мне разобраться!
прошу помочь разобраться с автокадом точнее:
Помогите разобраться в задаче по программированию.
кто может помочь за деньги решить задачи по программированию ?
Очень прошу помочь доделать задачу по С++ !
прошу помочь с технологией программирования, срочно нужно!!!