Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Задача Паскаль Сфера


Автор: BlackMax 2.4.2006, 22:27
Дана сфера с радиусом R, R - натуральное число 1<=R<=30, и с центром в точке (0,0,0) плана координат x,y,z. Создайте программу которая подсчитает сколико точек с целыми координатоми помещаются в сферу, то есть с координатоми (1,1,1) или (-1,0,-2) и.т.д. Растояние от точки с координатоми (x,y,z) до центра сферы узнаётся по формуле: d=sqrt(x*x+y*y+z*z).

Автор: cardinal 2.4.2006, 22:31
Тут тему сферы:
http://forum.vingrad.ru/index.php?showtopic=22163

А вобще задача ИМХО только на циклы...

Автор: BlackMax 2.4.2006, 23:13
эти циклы ещё уметь делать надо.... а уметь делать это не про меня.... smile

Автор: MFSham 2.4.2006, 23:45
Так как сфера симметрична относительно любой из своих координатных осей, то для простоты решения можно рассматривать только положительную часть сферы (x>0, y>0, z>0), а затем полученное число умножить на 8. Еще потом надо будет прибавить точки лежащие на коорд. осях.

Ты не указал на чем писать. Я набросал на С++:
Код

//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <conio>
#include <math>
//---------------------------------------------------------------------------
using namespace std;

const R = 5;
int main()
{
     int count=0;  // количество точек вхождения
     for (int x=1; x<R; x++)
       for (int y=1; y<R; y++)
         for (int z=1; z<R; z++)
           if (sqrt(x*x+y*y+z*z) < R)
            count++;

     count=count*8 + R*6+1;  // 8 областей, 6 "разбитых" коорд. осей, 1 точка (0,0,0)
     cout << count;

     getch();
     return 0;
}
//---------------------------------------------------------------------------




Автор: BlackMax 3.4.2006, 18:45
MFSham, a сможешь для Паскаля переделать?

Автор: cardinal 3.4.2006, 18:46
BlackMax, а сам?

Автор: BlackMax 3.4.2006, 18:52
Цитата(cardinal @ 3.4.2006, 18:46)
BlackMax, а сам?

А самому слабо! И не стесняюсь этого, ну не шарю я в инфоше, я только основы знаю и задачи про мин и макс решать умею smile А оценка хорошая в атестате нужна! Всё равно на инфак не пойду, пойду на экономическии....

Автор: cardinal 3.4.2006, 19:25
Постучись в раздел по Паскалю с этим кодом тогда, думаю быстрее помогут...

Автор: SoWa 3.4.2006, 19:51
Поросячья сила рулит!
Код

var x,y,z,R: integer;
co: integer;
begin
co:=0;
readln(R);
 for x:=1 to R do
  for y:=1 to R do
   for z:=1 to R do
    begin
     if sqrt( sqr(x) + sqr(y) +sqr(z) )<=R then co:=co+1;
    end;
co:=co*8; {Так как считаем только для одного... Ну как его? Угла в общем.}
co:=co+1; {Ибо точка (0,0,0) тоже внутри сферы}
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)