Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Задачи для самостоятельного решения




Мряка и Бряка расдрусили пусик. Мряка взяла себе два фарика, а Бряка - один. По скольку хрунечков у Мряки и у Бряки?

Г.Остер. Задачник

5.1. Задана произвольная гирлянда. Написать функцию, которая вставляет в i-ю висюльку на k-е место число 48.

5.2. Задана произвольная гирлянда. Написать функцию, которая удаляет все пустые висюльки.

5.3. Задана произвольная гирлянда. Написать функцию, которая пе­реставляет первую висюльку на последнее место.

5.4. Задана произвольная гирлянда. Написать функцию, которая переворачивает i-ю висюльку "вверх ногами".

5.5. Задана произвольная гирлянда. Написать функцию, которая из данной гирлянды делает гирлянду с одной большой висюлькой (соби­рает все висюльки в одну, то есть висит первая висюлька, под ней вторая, под ней третья и т.д).

5.6. Задана произвольная гирлянда. Написать функцию, которая в каждой висюльке оставляет по три элемента.

5.7. Задана произвольная гирлянда. Написать функцию, которая из­меняет порядок следования висюлек на противоположный.

5.8. Задана произвольная гирлянда. Написать функцию, которая до­бавляет в каждую висюльку на первое место число 10.

5.9. Задана произвольная гирлянда. Написать функцию, которая удаляет во всех висюльках отрицательные числа.

5.10. Задана произвольная гирлянда. Написать функцию, которая вычисляет сумму всех чисел гирлянды и помещает ее на первое место в каждой висюльке.

5.11. Задана произвольная гирлянда. Написать функцию, которая минимальные числа в каждой висюльке собирает в одну отдельную ви­сюльку и располагает ее на последнее место в гирлянде.

5.12. Задана произвольная гирлянда. Написать функцию, которая удаляет максимальный элемент в гирлянде.

5.13. Задана произвольная гирлянда. Написать функцию, которая вставляет в гирлянду на (i+1)-е место новую висюльку (3,5,-6,11).

5.14. Задана произвольная гирлянда. Написать функцию, которая во всех висюльках ставит последний элемент на первое место.

5.15. Задана произвольная гирлянда. Написать функцию, которая удаляет первые элементы в висюльках, висящих на четных местах.

5.16. Задана произвольная гирлянда. Написать функцию, которая удаляет висюльки, висящие на четных местах.

5.17. Задана произвольная гирлянда. Написать функцию, которая удаляет висюльки, у которых на первом месте отрицательное число.

5.18. Задана произвольная гирлянда. Написать функцию, которая подвешивает первую висюльку к самой короткой висюльке.

5.19. Задана произвольная гирлянда. Написать функцию, которая перевешивает висюльку, содержащую одни нули на первое место.

5.20. Задана произвольная гирлянда. Написать функцию, которая "удваивает" i-ю висюльку, то есть из висюльки (-1 6 12) должна полу­читься висюлька (-1 -1 6 6 12 12).

5.21. Задана произвольная гирлянда. Написать функцию, которая добавляет в каждую висюльку на последнее место число -17.

5.22. Задана произвольная гирлянда. Написать функцию, которая добавляет в конец гирлянды висюльку, являющуюся копией i-й ви­сюльки.

5.23. Задана произвольная гирлянда. Написать функцию, которая в каждой висюльке выбрасывает средний элемент (или два средних эле­мента, если количество элементов в висюльке четно).

5.24. Задана произвольная гирлянда. Написать функцию, которая меняет на противоположный знак каждого нечетного элемента в ви­сюльках с четными номерами.

5.25. Задана произвольная гирлянда. Написать функцию, которая обнуляет все элементы в тех висюльках, в которых все числа распо­ложены по возрастанию.

5.26. Задана произвольная гирлянда. Написать функцию, которая подвешивает копию первой висюльки под последнюю, а копию послед­ней под первую.

5.27. Задана произвольная гирлянда. Написать функцию, которая удваивает каждую висюльку, подвешивая под ней ее копию.

5.28. Задана произвольная гирлянда. Написать функцию, которая в каждой висюльке вставляет между равными числами число 0.

5.29. Задана произвольная гирлянда. Написать функцию, которая в каждой висюльке меняет местами числа, "висящие" на четных и не­четных местах.

5.30. Задана произвольная гирлянда. Написать функцию, добавляющую новое звено в гирлянду, висюлька которого содержит суммы висюлек соответствующего звена гирлянды.

5.31. Установите, какими недостатками обладает приведенная ниже функция. Исправьте их.

void GirVstav (nodeGir **Res,int el)

// Включение звена с информационным полем el после звена, на которое //указывает *Res (включение звена в гирлянду).

{

nodeGir *q, *f;

q = new nodeGir;

(*q).elem = el; (*q).sled = (**Res).sled; (**Res).sled = q;

}

5.32. Установите, какими недостатками обладает приведенная ниже функция. Исправьте их.

void Gir1Vstav (nodeGir **Res,int el)

//Включение звена с информационным полем el перед звеном, на которое //указывает *Res (включение звена в гирлянду).

{

nodeGir *q;

q = new nodeGir;

(*q).elem = (**Res).elem; (*q).sled = (**Res).sled;

(**Res).elem = el; (**Res).sled = q;

}

5.33. Установите, какими недостатками обладает приведенная ниже функция. Исправьте их.

void GirUdale (nodeGir **Res)

//Удаление звена, расположенного после звена, на которое

//указывает ссылка *Res (удаление звена гирлянды).

{

nodeGir *q;

q = (**Res).sled;

if ((**Res).sled!=NULL)

{ (**Res).sled = (*(**Res).sled).sled; delete q; }

else cout<<"Звено с заданным элементом - последнее!\n";

}

5.34. Установите, какими недостатками обладает приведенная ниже функция. Исправьте их.

void Gir1Udale (nodeGir **Res)

//Удаление звена, на которое указывает ссылка *Res

//(удаление звена гирлянды).

{

nodeGir *g;

if ((**Res).sled!=NULL)

{g = (**Res).sled;

(**Res).elem = (*(**Res).sled).elem;

(**Res).sled = (*(**Res).sled).sled;

delete g; }

else cout<<"Не умею удалять последнее звено!\n";

}

5.35*. Данная задача заимствована из монографии [38].

(а) Рассмотрим фабрику, изготавливающую изделия из более мел­ких узлов. Назовем элементарной деталью такой узел, который не является композицией более мелких.

Напишите программу, которая считывает набор строк, содержащих четырехсимвольные номера деталей. Первый такой номер в строке обозначает неэлементарную деталь, а оставшиеся числа обозначают детали, из которых состоит данная неэлементарная часть. Эти сос­тавные части могут быть элементарными, но могут также состоять из других частей (в этом случае их номера появляются первым номером в какой-либо строке). Программа создает список с заглавным звеном для каждой неэлементарной детали. Заглавное звено содержит имя неэлементарной детали и указатель на список элементов, описываю­щий составляющие части.

 
 

 

 


Указатели на заголовки списков последовательно записываются в массив PARTS. Затем программа печатает все неэлементарные детали.

(б) Напишите программу, которая считывает массив PARTS и набор списков, созданных предыдущей задачей из части (а). Эта программа печатает для каждой неэлементарной детали список всех элементар­ных деталей, из которых она состоит.

Например, если часть A содержит части B, C и D и при этом B содержит элементарные части E и F, C является элементарной де­талью, а D содержит G, которая в свою очередь содержит элементар­ные части H и I, и при этом D также содержит элементарную часть J, то тогда A содержит элементарные части C, E, F, H, I и J.

(в) Покажите, как часть (б) может быть упрощена, если каждый узел включает в себя дополнительное поле указателя. Объясните вы­годность использования дополнительного поля для данной задачи и перепишите программу для частей (а) и (б) с использованием этого поля.

Замечание. Приведенные в этом разделе задачи принадлежат в основном А.С.Белозерову (Одесский педагогический институт).

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...