Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2012, 13:24   #1
Leisan_S
 
Регистрация: 13.01.2012
Сообщений: 3
По умолчанию Трехмерный массив

В трехмерном пространстве заданы точки (тройками значений x,y,z) и сфера (центр и радиус). Напишите программу, выводящую точки (их координаты), которые попадают в заданную пользователем сферу.
Leisan_S вне форума Ответить с цитированием
Старый 14.01.2012, 13:47   #2
Leisan_S
 
Регистрация: 13.01.2012
Сообщений: 3
По умолчанию

можно было бы загуглить, наверное, и собрать все компоненты в кучу; у меня проблема с программной реализацией((
Leisan_S вне форума Ответить с цитированием
Старый 15.01.2012, 17:05   #3
anydevelop
 
Регистрация: 20.10.2011
Сообщений: 5
По умолчанию

Вот. Если что непонятно, спрашивайте.
Код:
program sfera;

var
	dots: array[1..10000, 1..3] of Real;
	sphere: array[1..4] of Real;
	n, i, last: Integer;
	x, y, z: Real;
	
begin
	last := 0;
	write('Введите коодинаты x, y и z центра сферы и её радиус, разделяя пробелом: ');
	readln(sphere[1], sphere[2], sphere[3], sphere[4]);
	write('Введите количество точек: ');
	readln(n);
	writeln('');
	for i := 1 to n do
	begin
		write('Введите координаты x, y и z точки ');
		write(i);
		write(', разделяя их пробелом: ');
		readln(x, y, z);
		if sqrt((x-sphere[1]) * (x-sphere[1]) + (y-sphere[2]) * (y-sphere[2]) + (z-sphere[3]) * (z-sphere[3])) <= sphere[4] then
		begin
			last := last+1;
			dots[last, 1] := x;
			dots[last, 2] := y;
			dots[last, 3] := z;
		end;
	end;
	writeln('');
	
	if last > 0 then
	begin
		write('Вот точки, лежащие внутри сферы: ');
		for i:=1 to last do
		begin
			if i = last then
			begin
				writeln(dots[i, 1], dots[i, 2], dots[i, 3]);
			end else
			begin
				write(dots[i, 1], dots[i, 2], dots[i, 3]);
				write(', ');
			end;
		end;
	end else
		writeln('Все точки вне сферы');
end.
anydevelop вне форума Ответить с цитированием
Старый 16.01.2012, 22:22   #4
Leisan_S
 
Регистрация: 13.01.2012
Сообщений: 3
По умолчанию

error 22 structure too large на строку dots: array[1..10000, 1..3] of Real;
просмотрела в поиске, народ пишет, что в турбо паскаль ограничение не пройти, а free pascal ну никак не подойдет
Повожусь-ка я еще по лекциям
Leisan_S вне форума Ответить с цитированием
Старый 17.01.2012, 06:55   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Все верно, ограничение не размер структуры, но если это к примеру учебная задача, то первую размерность можно и поменьше сделать, если нет - можно попробовать реализовать динамический список (правда сходу не скажу, какие ограничения на использование памяти накладывает TP)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 09.01.2015, 18:50   #6
amgalan
Новичок
Джуниор
 
Регистрация: 09.01.2015
Сообщений: 1
По умолчанию

можно ли сделать так ?
mass=array [0..51] of array[0..51] of array[0..2] of integer;
допустим
amgalan вне форума Ответить с цитированием
Старый 09.01.2015, 19:03   #7
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

в С++ можно было бы сделать: N=10000; double huge dots[N];
а как в Turbo Pascal'е сделать...
а если ты консольку в Delphi накатаешь? - мож, там на память нет такого ограничения?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 09.01.2015, 19:17   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А точки в массиве откуда берутся? В общем-то массив здесь ни какой и не нужен, особенно если координаты из файла берутся или вводятся пользователем. При условии, что координаты и радиус сферы вводятся первыми. Прямо в цикле считывания координат обрабатывать каждую точку и забывать про неё
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.01.2015 в 19:20.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
трехмерный массив world12_tk Помощь студентам 2 06.01.2012 17:04
как заполнить трехмерный массив процедурой? MyLastHit Общие вопросы Delphi 9 03.01.2011 21:00
Трехмерный дин. массив revanatar Общие вопросы C/C++ 3 29.11.2010 22:02
Упорядочить трехмерный массив и вывести максимальные 160 значений Alex Cones Общие вопросы Delphi 0 20.08.2009 12:30
Трехмерный график natasha Общие вопросы Delphi 5 27.08.2008 22:19