IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> двусвязные список, последовтельность чисел, подготовка к экзамену
Катюша
сообщение 22.07.2005 22:46
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Женский

Репутация: -  0  +


Ввести последовательность натуральных чисел. Если последовательность упорядочена по невозрастанию первой или последней цифры, удалить из последовательности составные числа и продублировать простые числа, содержащие цифры 1,5 или 7. В противном случае упорядочить последовательность по неубыванию. Последовательность хранить в двусвязном СПИСКЕ. Перед завершением программы очистить динамическую память с помощью процедуры Release.

помогите пожалуйста написать программу smile.gif


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 22.07.2005 23:33
Сообщение #2


Гость






А вот тут поясни:
Цитата(Катюша @ 22.07.05 22:46)
удалить из последовательности составные числа

что подразумевает понятие "составные"? Не являющиеся простыми, или что-то другое?
 К началу страницы 
+ Ответить 
Катюша
сообщение 22.07.2005 23:40
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Женский

Репутация: -  0  +


если там речь идет о простых числах, то наверняка подразумеваются числа (под словом "составные") которые на что то делятся, кроме как на себя и на единицу.

в принципе, думаю, что наш препод такое толкование бы допустил.. если бы вот такое пояснение привели..


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.07.2005 0:36
Сообщение #4


Гость






Полностью программу писать не буду, но вот в таком направлении надо двигаться (TList - это реализация двухсвязного списка, я ее выкладывал на форуме, в теме про ООП, но можно взять и реализацию Oleg_Z отсюда):
{ проверка, простое ли число (взято из FAQ)... }
function isPrime(X: word): boolean;
var
i: integer;
Begin
isPrime:=false;
for i:=2 to trunc(sqrt(x)) do
if x mod i = 0 then Exit;
isPrime:=true
End;

var
my_list: tlist; { это двухсвязный список }
i: integer;

p: ptitem;
is_ok: boolean;
T: integer;
digit_set: set of byte;
before_list: Pointer;

begin
my_list.init;

mark(before_list); { потом к этому состоянию вернемся через release }

for i := 1 to 10 do
my_list.append(arr[i]); { заполняем список }
my_list.print; { и печатаем, для проверки }

{ проверяем на упорядоченность }
p := my_list.first;
is_ok := true;
while assigned(p) do begin

if p^.next <> nil then
{ это проверка на невозрастание последней цифры,
если надо - сюда же можешь добавить и первую,
но так как числа могут быть и 1, и 2, и 3-значными,
может возникнуть проблема }
is_ok := is_ok and ((p^.info mod 10) >= (p^.next^.info mod 10));
p := p^.next;

end;

if is_ok then begin { последовательность упорядочена, делаем что надо: }

{ опять проходим по списку с начала }
p := my_list.first;
while assigned(p) do begin

if not isPrime(p^.info) then
{ число - составное, удаляем элемент }
my_list.remove_item(p)
else begin { число простое }
{ здесь - проверяем на наличие цифр 1, 5, 7 в числе
я бы делал так: }
T := p^.info;
while T > 0 do begin
digit_set := digit_set + [(T mod 10)]; T := T div 10;
end;
{ если присутствует одна из цифр 1, 5, 7 то
продублировать данное значение }
if (1 in digit_set) or (5 in digit_set) or (7 in digit_set) then
my_list.insert_after(p, p^.info);
end;

p := p^.next;

end;
end
else begin
{ список неупорядочен - просто отсортируй его любым способом }
end;

my_list.print; { опять для проверки }

{ возвращаемся к ранее запомненному состоянию
кучи - список будет удален }
release(before_list);

end.
 К началу страницы 
+ Ответить 
Катюша
сообщение 23.07.2005 15:50
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Женский

Репутация: -  0  +


посмотрю, что смогу сделать.. если будут вопросы- задам


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 14:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"