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

Структура, перегрузка функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно построить алгоритм получения всех натуральных чисел Nm http://www.cyberforum.ru/cpp-beginners/thread794939.html
Нужно построить алгоритм получения всех натуральных чисел Nm в заданном диапазоне от А до С, таких, что Nm=i3+j3, где i, j – натуральные числа, меньшие N. #include <iostream> #include <Cmath> #include <math.h> using namespace std; int i=0,j=0,A=0,C=0; int main() {
C++ Не сложная элементарная легкая задача с хэдерами,поинтерами и тд Здравствуйте, ребята! Столкнулась с задачей..времени,как всегда не хватает(( Вообщем, есть задача у меня такая: #include<iostream> #include"car.h" #include"mazda.h" using namespace std; template <typename T> const T& compare(const T& c1, const T& c2){ http://www.cyberforum.ru/cpp-beginners/thread794937.html
C++ Expression syntax in function bh()
x=(d++ y+ + -2*c+777)/ 7; ошибку выдает после квадратных скобками ; подскажите что делать ?
C++ Не могу удалить динамически выделенную память под массив
Здравствуйте. Изучил сегодня динамическое выделение памяти и не могу ее удалить. Подскажите где ошибка и, если возможно, объясните почему она возникла. Вот часть программы. try { double *mass1= new double; } catch (bad_alloc & exept) { cout<<"There is no free space for "<<size<<" blocks of memory. The program will end. Goodby."; exit(1);
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread794917.html
Надо реализовать решение вот этой задачи в C++ В опщем вот сама задача (картинка)
C++ Как найти в строке вещественные числа ? Всем доброго времени суток, как в строке найти вещественные числа, знаю функцию isdigit(c) но она проверяет является ли с - числом, а нужно вещественное подробнее

Показать сообщение отдельно
АлександрБелоус
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 15
26.02.2013, 01:40  [ТС]     Структура, перегрузка функций
Задача 1-Структуры и параметры по умолчанию
Ограничение времени: 1 с
Ограничение памяти: 256 M
В селе Ивановка происходит набор слушателей на двухгодичные курсы трактористов. При этом тех, кто имеет водительские права, берут сразу на второй "курс", остальных - на первый. При записи на курсы требуется указать фамилию, средний балл аттестата и курс начала обучения (1 или 2). Большинство жителей села имеют фамилию Ivanov, средний балл аттестата 4.0, и большинство записывается на 1-ый курс. Используя перегрузку функций и параметры по умолчанию, реализовать минимальное количество функций для комфортного ввода информации о поступающих (при вызове функций задавать только те значения параметров, которые отличаются от умалчиваемых).
Для хранения в массиве информации о записавшихся на курсы использовать структуру traktorist:
• char name[20];
• double mark;
• int year;
Технические подробности
1. Для хранения списка записавшихся на курсы использовать массив (можно статический) структур traktorist.
2. Требуется разработать две функции: void print_all(), распечатывающую информацию о всех записавшихся на курсы, и int add(...тут разные параметры...), добавляющую еще одного слушателя в конец списка.
3. Функция add должна быть перегружена так, чтобы имелась возможность вызывать ее без параметров (используются все значения по умолчанию), с одним параметром (или только фамилия, или только балл, или только курс), с двумя параметрами (фамилия и балл, фамилия и курс, балл и курс), со всеми тремя параметрами (фамилия, балл, курс).
4. В случае успешного добавления функция возвращает число 0, в случае ошибки - число -1.
5. "Курс" может быть только 1-ый или 2-ой.
6. Подсказка: функцию add достаточно перегрузить 4-мя способами.
Примеры
Входные данные Результат работы
traktorist t;
t.mark = 5;
t.year = 2;

cout << t.mark << " " << t.year; 5 2
add("Petrov", 4.5, 2);
add("Petrov", 4.5);
add("Petrov");
add();

add(4.5);
add(4.5, 2);

print_all(); Petrov 4.5 2
Petrov 4.5 1
Petrov 4 1
Ivanov 4 1
Ivanov 4.5 1
Ivanov 4.5 2
add();

add("Petrov");
add(4.5);
add(2);

add("Petrov", 2);
add("Petrov", 4.5);
add(4.5, 2);

add("Petrov", 4.5, 2);

print_all(); Ivanov 4 1
Petrov 4 1
Ivanov 4.5 1
Ivanov 4 2
Petrov 4 2
Petrov 4.5 1
Ivanov 4.5 2
Petrov 4.5 2
Примечания
В приведенных выше примерах функция add() ничего на экран не выводит. Все выводится в функции print_all().
Оценивание
Критерий Балл*
Наличие структуры traktorist 1
Наличие одного варианта функции add:
int add(const char* name, double mark, int kurs) 1
Корректная работа функции print_all() 1
Прохождение теста из Примера 2 1
Прохождение всех тестов 1
*Указанные баллы начисляются в случае отсутствия грубых ошибок в коде (стилистика кода проверяется дополнительно вручную).
Авторское решение
Время: 40 мин.
Объем: 71 строка.
Контрольные вопросы
1. Каков размер в памяти экземпляра структуры traktorist? Почему именно такой?
2. Сколько байт памяти занимает следующий массив: traktorist array[10];? Почему?
3. Приведите примеры объявления:
o экземпляра структуры;
o указателя на структуру;
o статического массива структур;
o динамического массива структур (и код выделения памяти под него);
o функции, которая принимает структуру (массив структур) в качестве параметра и возвращают структуру с помощью return; пример ее вызова.
4. Приведите пример обращения к полям структуры через объект и через указатель на объект; пример обращения к полям i-го элемента массива.
5. Приведите фрагмент кода, меняющий местами i-ый и j-ый элементы массива структур.
6. Как бы Вы хранили информацию о 10-ти трактористах "традиционным" способом - без использования структур? (приведите пример кода)
7. Приведите пример перегрузки функций. Вызовите эти перегруженные функции. Объясните, как аналогичный фрагмент кода выглядел бы на чистом Си.
8. Приведите простой пример кода, демонстрирующий использование параметров по умолчанию.
9. Сколькими различными способами можно вызвать следующую функцию:
void print_error_message(const char* message=NULL, int level = 4, int code = 0);?
10. Объясните, в каких случаях применяется подобная конструкция:
void print_vertex(double, double, double = 0);
Для гиков:
1. Что такое "#pragma pack" и какое отношение эта конструкция имеет к вопросу об определении размера структуры? Покажите, как одна и та же структура может иметь различный размер в зависимости от этой настройки.
2. Что такое name mangling и какое отношение это явление имеет к перегрузке функций?
3. Влияет ли (и как) использование перегрузки функций на количество генерируемого объектного кода (размер .obj-файла)? Тот же вопрос про параметры по умолчанию.
4. Может ли одна и та же функция при вызове ее из разных единиц трансляции (.cpp-файлов) иметь разные "значения по умолчанию" своих "параметров по умолчанию"? Привести пример кода.
 
Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru