Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

3.2. Скопируйте значения из массива

ga
в массив
la
.

3.3. Выведите на печать элементы массива

la
.

3.4. Определите указатель

p
, ссылающийся на переменную типа
int
, и инициализируйте его адресом массива, расположенного в свободной памяти и хранящего такое же количество элементов, как и массив, являющийся аргументов функции.

3.5. Скопируйте значения из массива, являющегося аргументом функции, в массив, расположенный в свободной памяти.

3.6. Выведите на печать элементы массива, расположенного в свободной памяти.

3.7. Удалите массив из свободной памяти.

4. В функции

main
сделайте следующее.

4.1. Вызовите функцию

f
с аргументом
ga
.

4.2. Определите массив

aa
, содержащий десять элементов, и инициализируйте его первыми десятью значениями факториала (т.е. 1, 2*1, 3*2*1, 4*3*2*1 и т.д.).

4.3. Вызовите функцию

f
с аргументом
aa
.

Задание со стандартным вектором

1. Определите глобальный вектор

vector<int> gv
; инициализируйте его десятью целыми числами 1, 2, 4, 8, 16 и т.д.

2. Определите функцию

f
, принимающую аргумент типа
vector<int>
.

3. В функции

f
сделайте следующее.

3.1. Определите локальный вектор

vector<int> lv
с тем же количеством элементов, что и вектор, являющийся аргументом функции.

3.2. Скопируйте значения из вектора

gv
в вектор
lv
.

3.3. Выведите на печать элементы вектора

lv
.

3.4. Определите локальный вектор

vector<int> lv2
; инициализируйте его копией вектора, являющегося аргументом функции.

3.5. Выведите на печать элементы вектора

lv2
.

4. В функции

main
сделайте следующее.

4.1. Вызовите функцию

f
с аргументом
gv
.

4.2. Определите вектор

vector<int> vv
и инициализируйте его первыми десятью значениями факториала (1, 2*1, 3*2*1, 4*3*2*1 и т.д.).

4.3. Вызовите функцию

f
с аргументом
vv
.

Контрольные вопросы

1. Что означает выражение “Покупатель, будь бдителен!”?

2. Какое копирование объектов класса используется по умолчанию?

3. Когда копирование объектов класса, используемое по умолчанию, является приемлемым, а когда нет?

4. Что такое конструктор копирования?

5. Что такое копирующее присваивание?

6. В чем разница между копирующим присваиванием и копирующей инициализацией?

7. Что такое поверхностное копирование? Что такое глубокое копирование?

8. Как копия объекта класса vector сравнивается со своим прототипом?

9. Перечислите пять основных операций над классом.

10. Что собой представляет конструктор с ключевым словом

explicit
? Когда его следует предпочесть конструктору по умолчанию?

11. Какие операции могут применяться к объекту класса неявно?

12. Что такое массив?

13. Как скопировать массив?

14. Как инициализировать массив?

15. Когда передача указателя на аргумент предпочтительнее передачи его по ссылке и почему?

16. Что такое строка в стиле С, или С-строка?

17. Что такое палиндром?

Термины

Упражнения

1. Напишите функцию

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

2. Напишите функцию

char* findx(const char* s, const char* x)
, находящую первое вхождение строки
x
в стиле языка С в строку
s
. Не используйте никаких стандартных функций. Не используйте индексирование, вместо него применяйте оператор разыменования *.

3. Напишите функцию

int strcmp(const char* s1, const char* s2)
, сравнивающую две строки в стиле языка С. Если строка
s1
меньше строки
s2
в лексикографическом смысле, функция должна возвращать отрицательное число, если строки совпадают — нуль, а если строка
s1
больше строки
s2
в лексикографическом стиле — положительное число. Не используйте никаких стандартных функций. Не используйте индексирование, вместо него применяйте оператор разыменования
*
.

  • Читать дальше
  • 1
  • ...
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: