Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проверки данных на вводе и френд-функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выбор базы данных http://www.cyberforum.ru/cpp-beginners/thread952804.html
Какую выбрать базу данных(перспективную и развивающуюся), гугл советует MySQL или Oracle// если да то посоветуйте хорошую литературу для начинающих
C++ Массивы. Заменить все отрицательные элементы массива числом 0 Создайте массив А с помощью генератора случайных чисел с элементами от -20 до 10 и выведите его на экран. Замените все отрицательные элементы массива числом 0 http://www.cyberforum.ru/cpp-beginners/thread952785.html
C++ Найдите ошибку, пожалуйста
Задача: Дано ряд символов. Заменить в нем круглые скобки на квадратные. Строку считывает, выводит не заменив скобки.:wall: #include <stdio.h> #include <string.h> #include <conio.h> #include...
strcpy и VS2012 C++
// newintro.cpp // познакомимся с оператором new #include <iostream> #include <cstring> #include <string.h> using namespace std; int main() { char* str = "Дурная голова ногам покоя не...
C++ Уважаемые программисты прокомментируйте программу пожалуйста http://www.cyberforum.ru/cpp-beginners/thread952770.html
#include <iostream> #include <ctime> using namespace std; class Budilnik { private: int hour, min, sec; public: void Set_time(int hour=0, int min=0, int sec=0);
C++ Шаблоны C++11 #include <iostream> template<typename T1, typename T2> auto func(T1 a, T2 b) -> decltype(a>b?b:a) { return a>b?b:a; } int main() { подробнее

Показать сообщение отдельно
dkg_C
8 / 8 / 1
Регистрация: 17.09.2012
Сообщений: 144

Проверки данных на вводе и френд-функция - C++

12.09.2013, 01:12. Просмотров 597. Ответов 18
Метки (Все метки)

Доброго времени суток!
Сразу к делу:
1. Фамилия студента должна содержать только буквы. Может кто знает какую проверку? А то и исключения перепробовал, но ничего не выходит почему-то...
2. Семестр студента должен содержать целочисленные значения >= 1.
3. Оценки студента должны содержать целочисленные значения от 0 до 10.
Это о проверках (код ниже, строки прокомментированы так же как идут здесь пункты).

Еще столкнулся с проблемой, что не могу никак вникнуть в friend-функции. Никак не могу получить доступ к данным класса. friend-функция exam (она закомментирована). Буду рад любой помощи!

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream> 
#include <string> 
#include <locale>
 
using namespace std;
 
class Stud { 
protected: 
    char *surname;
    int marks[4]; 
    int semester;
public: 
    Stud();
    void set(); 
    void get(); 
    Stud(const Stud &St);
    friend void exam (const Stud &St); // friend??
    ~Stud();
}; 
 
Stud::Stud() {
    surname = new char[20];
}
 
void Stud::set() {
    cout << "Фамилия студента ";
    cin >> surname; /////////////////////////////////// 1
    cout << "Семестр студента ";
    cin >> semester; ////////////////////////////////// 2
    for( int i = 0; i < 4; i ++) { //////////////////// 3
        cout << "Введите " << i + 1 << " оценку - ";
        cin >> marks[i];
    }
    cout << "=======ВВОД ЗАКОНЧЕН=======" << endl;
}
 
/*void exam(const Stud &St) { /////////////////////friend?
    cout << "Фамилия студента ";
    cin >> surname; 
    cout << "Семестр студента ";
    cin >> semester;
    for( int i = 0; i < 4; i ++) {
        cout << "Введите " << i + 1 << " оценку - ";
        cin >> marks[i];
    }
    cout << "=======ВВОД ЗАКОНЧЕН=======" << endl;
}*/
 
 
void Stud::get() { 
    cout << "Фамилия - " << surname << " " << endl; 
    cout << "Оценки:" << endl;
    for (int i = 0; i < 4; i++) 
        cout << "Оценка " << i + 1 << " равна " << marks[i] << endl;
    cout << "Семестр " << semester << endl;
    cout << "=====ВЫВОД ЗАКОНЧЕН========" << endl;
    }
 
Stud::Stud(const Stud &St) {
    for(int i = 0; i < 4;i++) marks[i] = St.marks[i];
    semester = St.semester;
    surname = new char[strlen(St.surname)+1];
    strcpy(surname, St.surname);
}
 
Stud::~Stud() { 
    delete []surname;
    surname = NULL;
}
 
int main() {
    setlocale(LC_ALL, "RUS");
    Stud FIRST_TRY;
    FIRST_TRY.set();
    FIRST_TRY.get();
    cout << "=====КОПИЯ СТУДЕНТА========" << endl;
    Stud SECOND_TRY(FIRST_TRY);
    SECOND_TRY.get();
    Stud STUDENTS_ARRAY[2];
    STUDENTS_ARRAY[0] = FIRST_TRY;
    STUDENTS_ARRAY[1] = SECOND_TRY;
    cout << "=====МАССИВ СТУДЕНТОВ======" << endl;
    for (int i = 0; i < 2; i++)
        STUDENTS_ARRAY[i].get();
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru