Форум программистов, компьютерный форум CyberForum.ru

Проверить и прокомментировать вариант решения тестового экзаменационного задания по теории C++ и Си - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение двойного факториала заданного числа N http://www.cyberforum.ru/cpp-beginners/thread1630973.html
Дано целое число N (> 0). Найти двойной факториал N: N!! = N·(N–2)·(N–4)·… (последний сомножитель равен 2, если N — четное, и 1, если N — нечетное). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число. Добавлено через 17 минут решите
C++ Вывести стоимость указанной массы конфет, при заданной цене за килограмм Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1.2, 1.4, …, 2 кг конфет. http://www.cyberforum.ru/cpp-beginners/thread1630971.html
C++ Алгоритм поиска неравного числа за один проход, в наборе из 4 чисел, где 3 равные между собой
Дорогие мои земляки! Помогите зеленому. Подскажите как с использованием минимального количества условных операторов найти из 4 чисел, одно не равное, если остальные 3 равны между собой. Только без циклов и массивов, if и операторы сравнения. Мне говорили, что это связано с задачей о трех монетках, якобы такой же алгоритм.
Задача из книги Страуструпа C++
Нужна ваша помощь или хотя бы подсказка, в одном из упражнений в книге Страуструпа " Программирование. Принципы и практика с использованием с++", нужно было написать простейший калькулятор который принимает на вход цифровое значение типа double и символ операции и выводит результат на экран. Вот код: #include <cstdlib> #include <std_lib_facilities.h> using namespace std; int main(int argc,...
C++ Возможно ли создать шаблонный объект шаблонного объекта? http://www.cyberforum.ru/cpp-beginners/thread1630899.html
Всем хай, помогите ) Возможно ли создать : List<TreeNode<NODETYPE>*> hop; (есть шаблонный список , и я пытаюсь создать список из шаблонных узлов бинарного дерева) Это возможно ? Если да, то какой синтаксис ?
C++ Изменить поле класса используя typedef Есть такая возможность? typedef std::pair<int, int>::first i; typedef std::pair<int, int>::second j; а вызов такой: std::pair<int, int>A; подробнее

Показать сообщение отдельно
МихаилЗеленски
1 / 1 / 0
Регистрация: 14.10.2015
Сообщений: 79
Завершенные тесты: 1

Проверить и прокомментировать вариант решения тестового экзаменационного задания по теории C++ и Си - C++

03.01.2016, 20:21. Просмотров 385. Ответов 6
Метки (Все метки)

Уважаемые профессионалы,на днях мне предстоит сдавать экзамен по программированию, если не затруднит - посмотрите вопросы, которые я подготовил и скажите, всё ли верно, или чего-то не хватает. При подготовке пользовался книгой Павловской "Программирование на языке высокого уровня", а так же сайтами StackOverflow, http://www.c-cpp.ru/, http://cppstudio.com/ , Habrahabr. некоторые вопросы оставил без ответа, так как не знаю его...) (надпись ПРОГА означает, что мне ещё предстоит написать программу для этого варианта). Заранее спасибо))
Кликните здесь для просмотра всего текста
ВАРИАНТ №1
1) Что такое поток? Можно ли открыть поток не открывая файла?
Поток — ЭТО абстрактное понятие, относящееся к любому переносу данных от
источника к приемнику. Потоки C++, в отличие от функций ввода/вывода в стиле
С, обеспечивают надежную работу как со стандартными, так и с определенными
пользователем типами данных, а также единообразный и понятный синтаксис.
Чтение данных из потока называется извлечением, вывод в поток — помещегшем,
или включением. Поток определяется как последовательность байтов и не зависит
от конкретного устройства, с которым производится обмен (оперативная память,
файл на диске, клавиатура или принтер). Обмен с потоком для увеличения
скорости передачи данных производится, как правило, через специальную область
оперативной памяти — буфер. Фактическая передача данных выполняется
при выводе после заполнения буфера, а при вводе — если буфер исчерпан.
По направлению обмена потоки можно разделить на входные (данные вводятся в
память), выходные (данные выводятся из памяти) и двунаправленные (допускающие
как извлечение, так и включение).
По виду устройств, с которыми работает поток, можно разделить потоки на стандартные,
файловые и строковые.
Нельзя открыть поток не открывая файл. Если всё-таки сделать это, то указатель на поток приобретёт значение NULL (0), что является ошибкой.

2) Что такое класс? Что такое обьект?
Классы в С++ — это абстракция описывающая методы, свойства, ещё не существующих объектов. Объекты — конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса. Эти объекты могут иметь различное поведение, свойства, но все равно будут являться объектами одного класса. В ООП существует три основных принципа построения классов:
Инкапсуляция — это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя.
Наследование — это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку.
Полиморфизм — свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
3) ПРОГА

ВАРИАНТ №2
1) Как устроена строка формата функции fscanf?
Функция fscanf() работает подобно функции scanf(), но читает информацию не из стандартного потока ввода stdin, а из потока, заданного указателем stream.
Приведенный фрагмент программы читает из потока fp строку и значение переменной f с плавающей точкой (типа float).
char str[80];
float f;

fscanf(fp, "%s%f", str, &f);
Где fp –поток, "%s%f" – спецификаторы формата, str - строка, f – переменная .

2) Какие существуют возможности определения функций-компонент класса?
В С++ компоненты-функции могут использоваться с модификатором static и const. Обычная компонента-функция, вызываемая
object . function(a,b);
имеет явный список параметров a и b и неявный список параметров, состоящий из компонент данных переменной object. Неявные параметры можно представить как список параметров, доступных через указатель this. Статическая (static) компонента-функция не может обращаться к любой из компонент посредством указателя this. Компонента-функция const не может изменять неявные параметры.

3) ПРОГА

ВАРИАНТ №3
1) Как проверить существует ли ошибка во время работы с потоками?
???????????????????????????????????
2) Что такое инкапсуляция. Описать основные спецификаторы доступа.
Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией
(encapsulation).
Всего существует 3 спецификатора доступа :
-public – доступ имеет любая функция;
-protected –аналогично private. Разница заметна только при наследовании;
-private - доступ имеют только функции-члены класса или дружественные функции класса.
3)ПРОГА


ВАРИАНТ №4
1) Функции, которые читают и записывают строку в поток.
Вывод в поток выполняется с помощью операции вставки (в поток), которая является перегруженной операцией сдвига влево << . Левым ее операндом является объект потока вывода. Правым операндом может являться любая переменная, для которой определен вывод в поток (то есть переменная любого встроенного типа или любого определенного пользователем типа, для которого она перегружена). Например, оператор cout << "Hello!\n"; приводит к выводу в предопределенный поток cout строки "Hello!".
Для ввода информации из потока используется операция извлечения, которой является перегруженная операция сдвига вправо >>. Левым операндом операции >> является объект класса istream, который также является и результатом операции. Это позволяет строить цепочки операций извлечения из потока, выполняемых слева направо. Правым операндом может быть любой тип данных, для которого определен поток ввода. Для С это функции gets() и puts().
Для операций с бинарными файлами существуют функции read() и write().
2) Что такое полиморфизм?
Полиморфизм — возможность использовать в различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать требуемое действие во время выполнения программы.
3)ПРОГА


ВАРИАНТ №5
1) Что возвращает функция fopen?
Если файл был успешно открыт, то fopen вернёт указатель на объект FILE, который может быть использован для идентификации потока будущих операций.
2) Для чего используются статические поля? Какие их особенности?
Статические поля применяются для хранения данных, общих для всех объектов
класса, например, количества объектов или ссылки на разделяемый всеми объектами ресурс. Эти поля существуют для всех объектов класса в единственном экземпляре, то есть не дублируются.
Вот их особенности :
- Память под статическое поле выделяется один раз при его инициализации
независимо от числа созданных объектов (и даже при их отсутствии) и инициализируется с помощью операции доступа к области действия, а не операции
выбора (определение должно быть записано вне функций)
- Статические поля доступны как через имя класса, так и через имя объекта:
А *а. Ь:
cout « A::count « a->count « b.count:
// Будет выведено одно и то же;
- На статические поля распространяется действие спецификаторов доступа, поэтому статические поля, описанные как private, нельзя изменить с помощью операции доступа к области действия, как описано выше. Это можно сделать только с помощью статических методов.
- Память, занимаемая статическим полем, не учитывается при определении размера объекта с помощью операции sizeof.
3) ПРОГА

ВАРИАНТ №6
1) На какие группы можно поделить библиотечные функции ввода-вывода?
Библиотечные функции ввода-вывода можно поделить на стандартные, форматированный ввод-вывод. (не уверен в этом ответе)
2) Что такое статические методы? Для чего они предназначены?
Статические методы предназначены для обращения к статическим полям класса.
Они могут обращаться непосредственно только к статическим полям и вызывать
только другие статические методы класса, потому что им не передается скрытый
указатель this. Обращение к статическим методам производится так же, как к
статическим полям — либо через имя класса, либо, если хотя бы один объект
класса уже создан, через имя объекта.
3) ПРОГА

ВАРИАНТ №7
1) Как открыть поток в двоичном режиме?
(открыть двоичный файл для записи можно с помощью функций read() и write(), но открыть поток в двоичном режиме….)
2) Для чего используются дружественные функции? Правила их описания и особенности.
Дружественные функции применяются для доступа к скрытым нолям класса и
представляют собой альтернативу методам.
Вот правила описания и особенности дружественных функций.
• Дружественная функция объявляется внутри класса, к элементам которого
ей нужен доступ, с ключевым словом friend. В качестве параметра ей должен
передаваться объект или ссылка на объект класса, поскольку указатель this
ей не передается.
• Дружественная функция может быть обычной функцией или методом другого
ранее определенного класса. На нее не распространяется действие спецификаторов
доступа, место размещения ее объявления в классе безразлично.
• Одна функция может быть дружественной сразу нескольким классами.
Использования дружественных функций нужно по возможности избегать, поскольку
они нарушают принцип инкапсуляции и, таким образом, затрудняют отладку
и модификацию программы.
3) ПРОГА

ВАРИАНТ №8
1) Что такое поток? Можно ли открыть поток не открывая файла?
Поток — ЭТО абстрактное понятие, относящееся к любому переносу данных от
источника к приемнику. Потоки C++, в отличие от функций ввода/вывода в стиле
С, обеспечивают надежную работу как со стандартными, так и с определенными
пользователем типами данных, а также единообразный и понятный синтаксис.
Чтение данных из потока называется извлечением, вывод в поток — помещегшем,
или включением. Поток определяется как последовательность байтов и не зависит
от конкретного устройства, с которым производится обмен (оперативная память,
файл на диске, клавиатура или принтер). Обмен с потоком для увеличения
скорости передачи данных производится, как правило, через специальную область
оперативной памяти — буфер. Фактическая передача данных выполняется
при выводе после заполнения буфера, а при вводе — если буфер исчерпан.
По направлению обмена потоки можно разделить на входные (данные вводятся в
память), выходные (данные выводятся из памяти) и двунаправленные (допускающие
как извлечение, так и включение).
По виду устройств, с которыми работает поток, можно разделить потоки на стандартные,
файловые и строковые.
Нельзя открыть поток не открывая файл. Если всё-таки сделать это, то указатель на поток приобретёт значение NULL (0), что является ошибкой.

2)Механизм работы виртуальных функций.
В C++ все функции по умолчанию имеютраннее связывание, то есть компилятор и компоновщик решают, какая именно функция должна быть вызвана, до запуска программы. Виртуальные функции имеют позднее связывание, то есть при вызове функции нужное тело выбирается на этапе выполнения программы.
Встретив ключевое слово virtual, компилятор помечает, что для этого метода должно использоваться позднее связывание: для начала он создает для класса таблицу виртуальных функций, а в класс добавляет новый скрытый для программиста член — указатель на эту таблицу. Таблица виртуальных функций хранит в себе адреса всех виртуальных методов класса (по сути, это массив указателей), а также всех виртуальных методов базовых классов этого класса. Таблиц виртуальных функций будет столько, сколько есть классов, содержащих виртуальные функции — по одной таблице на класс.
3) ПРОГА
Вложения, ожидающие проверки
Тип файла: docx ПроТеори.docx
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru