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

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

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

 
 Ответить  Открыть новую тему 
> двусвязные список, последовтельность чисел, подготовка к экзамену
сообщение
Сообщение #1


Пионер
**

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

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


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

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


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


Гость






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

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


Пионер
**

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

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


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

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


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

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

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


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


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

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

 





- Текстовая версия 1.09.2025 22:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name