Для этих упражнений может оказаться полезным скомпилировать все программы с помощью компиляторов и языка C, и языка C++. Если использовать только компилятор языка C++, можно случайно использовать свойства, которых нет в языке C. Если вы используете только компилятор языка C, то ошибки, связанные с типами, могут остаться незамеченными
1. Реализуйте варианты функций strlen(), strcmp() и strcpy().
2. Завершите пример с интрузивным контейнером List и протестируйте каждую его функцию.
Также вам может показаться, что такая тема как
http://business-avon.ru/stan-predstavitelem-avon/
никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт business-avon.ru
Тема стать представителем avon там представлена весьма широко.
3. Усовершенствуйте пример с интрузивным контейнером List по своему усмотрению. Предусмотрите перехват и обработку как можно большего количества ошибок. При этом можно изменять детали определений структур, использовать макросы и т. д.
4. Если вы еще на переписали пример с интрузивным контейнером List на языке C++, сделайте это и протестируйте каждую функцию.
5. Сравните результаты упр. 3 и 4.
6. Измените представление структур Link и List без изменения интерфейса пользователя, обеспеченного функциями. Разместите узлы в массивах и предусмотрите члены first, last, pre, и suc типа int (индексы массива).
7. Назовите преимущества и недостатки интрузивных контейнеров по сравнению с неинтрузивными контейнерами из стандартной библиотеки языка С++. Составьте списки аргументов за и против этих контейнеров.
8. Какой лексикографический порядок принят на вашем компьютере? Выведите на печать каждый символ вашей клавиатуры и ее целочисленный код; затем выведите на печать символы в порядке, определенном их целочисленными кодами.
9. Используя только средства языка C, включая его стандартную библиотеку, прочитайте последовательность слов из потока stdin и выведите ее в поток stdout в лексикографическом порядке. Подсказка: функция сортировки в языке C называется qsort(); найдите ее описание. В качестве альтернативы вставляйте слова в упорядоченный список по мере его считывания. В стандартной библиотеке языка C списка нет.
10. Составьте список свойств языка C, заимствованных у языков C++ или C with Classes.
11. Составьте список свойств языка C, не заимствованных у языка C++.
12. Реализуйте (либо с помощью С-строк, либо с помощью типа int) таблицу поиска с операциями find(struct table*, const char*), insert(struct table*, const char*, int) и remove(struct table*, const char*). Эту таблицу можно представить в виде массива пар структур или пар массивов (const char*[] и int*); выбирайте сами. Выберите типы возвращаемых значений для ваших функций. Документируйте ваши проектные решения.
13. Напишите программу на языке С, которая является эквивалентом инструкций string s; cin>>s;. Иначе говоря, определите операцию ввода, которая считывала бы в массив символов, завершающийся нулем, произвольно длинную последовательность символов, разделенных пробелами.
14. Напишите функцию, получающую на вход массив целых чисел типа int и находящую наименьший и наибольший элементы. Она также должна вычислять медиану и среднее значение. Используйте в качестве возвращаемого значения структуру, хранящую результаты.
15. Сымитируйте одиночное наследование в языке C. Пусть каждый базовый класс содержит указатель на массив указателей на функции (для моделирования виртуальных функций как самостоятельных функций, получающих указатель на объект базового класса в качестве своего первого аргумента); Реализуйте вывод производного класса, сделав базовый класс типом первого члена производного класса. Для каждого класса соответствующим образом инициализируйте массив виртуальных функций. Для проверки реализуйте вариант старого примера с классом Shape с базовой и производной функциями draw(), которые просто выводили имя своего класса. Используйте только средства и библиотеку, существующие в стандарте языка С.
16. Для запутывания реализации предыдущего примера (за счет упрощения обозначений) используйте макросы.
Послесловие
Мы уже упоминали выше, что не все вопросы совместимости решены наилучшим образом.
Тем не менее существует много программ на языке С (миллиарды строк), написанных кем-то, где-то и когда-то. Если вам придется читать и писать такие программы, эта статья подготовит вас к этому. Лично мы предпочитаем язык C++ и в этой статье частично объяснили почему. Пожалуйста, не недооценивайте пример интрузивного списка List —интрузивные списки List и непрозрачные типы являются важной и мощной технологией (как в языке C, так и в языке C++).
В этом приложении кратко изложены основные сведения о ключевых элементах языка С++. Оно имеет очень избирательный характер и предназначено для новичков, желающих узнать немного больше, чем написано в книге. Цель этого приложения — краткость, а не полнота.
Опубликовал katy
May 01 2015 11:35:31 ·
0 Комментариев ·
3390 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.