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

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

Восстановить пароль Регистрация
 
АлександрБелоус
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 15
25.02.2013, 23:07     Структура, перегрузка функций #1
Условие в Lab1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
using namespace std;
 
int n_used = 0;
 
truct traktorist
{
    char name[20];
    double mark;
    int year;
}; t[100]; // массив структур 
 
void print_all(){
    for (int i=0; i<n_used; i++){
        cout << t[i].name << "\t" << t[i].mark << "\t" << t[i].year << endl;
    }
}
 
int add(...){// без параметров (все значения по умолчанию - "Ivanov 4.0 1")
 
    return 0;
}
 
int add(...){// или фамилия или балл или курс
 
    return 0;
}
 
int add(...){// c двумя параметрами(фамилия и балл или фамилия и курс или балл  и курс)
 
    return 0;
}
 
int add(...){// со всеми тремя параметрами (фамилия, имя, курс)
 
    return 0;
}
 
int main()
{
    add("Petrov", 4.5, 2);
    add("Petrov", 4.5);
    add("Petrov");
    add();
    add(4.5);
    add(4.5, 2);
    print_all();
 
    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();
 
    return 0;
}
Вложения
Тип файла: doc lab1.doc (46.5 Кб, 12 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2013, 23:07     Структура, перегрузка функций
Посмотрите здесь:

C++ Перегрузка функций
C++ Перегрузка функций
Перегрузка функций C++
C++ Перегрузка функций!
перегрузка функций C++
C++ Перегрузка функций. Реализация функций
Перегрузка функций C++
C++ Перегрузка функций

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.02.2013, 23:44     Структура, перегрузка функций #2
По правилам форума. Нужно перепечатать задание.
АлександрБелоус
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 15
26.02.2013, 01:40  [ТС]     Структура, перегрузка функций #3
Задача 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-файлов) иметь разные "значения по умолчанию" своих "параметров по умолчанию"? Привести пример кода.
Yandex
Объявления
26.02.2013, 01:40     Структура, перегрузка функций
Ответ Создать тему
Опции темы

Текущее время: 21:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru