помогите!!!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Ася
Сообщения: 5
Зарегистрирован: 25 ноя 2006, 22:06

25 ноя 2006, 22:16

помогите, плиз, решить задачи в Дельфи:
1. Пересчитать все пары «соседних» простых чисел, не превосходящих заданного N, троичные представления которых получаются друг из друга в обратном порядке (первая такая пара – это 5 и 7).
2. Задано множество точек М в трехмерном пространстве. Найти такую из них, что шар заданного радиуса с центром в этой точке содержит максимальное число точек М.
3. Элементы каждого из массивов A и B упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив C так, чтобы они снова оказались упорядоченными по неубыванию.
4. Говорят, что матрица имеет седловую точку aij, если aij является минимальным в i-й строке и максимальным в j-ом столбце. Найти седловую точку матрицы.
5. Имеется некоторый текст, слова разделены пробелами. Найти все слова, имеющие указанное окончание.
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

04 дек 2006, 11:39

По-моему, проблемы тут могут возникнуть только с первой задачей. Остальные не так уж сложны.
2. Проверяешь в цикле все точки. Проверяешь во вложенном цикле расстояние от текущей точки до одной из остальных. Если оно меньше R - увеличиваешь счетчик для этой точки. После этого еще раз проверяешь все точки, у которой счетчик больше - та и есть искомая.
3. К примеру, так:
ma:=1;
mb:=1;
for i:=1 to length(c) do
if A[ma]<=B[mb] then
begin
c:=A[ma];
ma:=ma+1;
end
else begin
c:=B[mb];
mb:=mb+1;
end;
4. Сделать цикл по всем строкам. В каждой строке вложенным циклом найти минимальный элемент. После этого еще один вложенный цикл по тому столбцу, где стоит этот элемент. Если в столбце есть элемент, больший, чем найденный минимум - переходим к следующей строке, если все элементы меньше, чем найденный - он и является седловой точкой.
5. Считывать в строку из текста буквы, пока не появится символ "пробел". После этого проверить: if pos(last,newword)=length(newword)-length(last)+1, то вывести это слово. last - заданное окончание, newword - только что считанное слово. После этого очистить эту строку и продолжать читать, пока текст не кончится.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

04 дек 2006, 12:47

&quot писал(а):1. Пересчитать все пары «соседних» простых чисел, не превосходящих заданного N, троичные представления которых получаются друг из друга в обратном порядке (первая такая пара – это 5 и 7).
Хыиуду, тут вроде тоже проблем нет.

1. Найти все простые числа до N.
2. Создать процедуры перевода в троичную систему и обратно.
3. В цикле перебирать все соседние простые числа и проверять условие.

Хочу напомнить, что для того, чтобы проверить является ли число простым достаточно проверить, делиться ли это число (допустим K) на нечетные числа до Sqrt(K). В идеале достаточно проверять делимость на простые числа до Sqrt(K) (думаю, не надо объяснять, почему). Для получение списка простых чисел можно использовать для этого рекурсию.

Про переводы в разные системы на форуме куча инфы.
Ответить