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

Проверки данных на вводе и френд-функция - 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 <stdlib.h> int main() {
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
12.09.2013, 11:59  [ТС]     Проверки данных на вводе и френд-функция
При вставке в основной код выдает ошибки. И если в main() в exam убрать exam(FIRST_TRY) (то что в скобках), то не работает. Если же просто вызывать функцию работает, но не с объектами класса. Поэтому она ничего и не забивает в них, выдавая "пустые" данные.
C++
1
2
3
4
5
6
s.cpp(72): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
see declaration of 'strcpy'
ManifestResourceCompile:
 All outputs are up-to-date.
s.obj : error LNK2019: unresolved external symbol "void __cdecl exam(class Stud &)" (?exam@@YAXAAVStud@@@Z) referenced in function _main
 fatal error LNK1120: 1 unresolved externals
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
88
89
90
91
92
93
94
95
96
#include <iostream> 
#include <string> 
#include <locale>
#include <exception>
#include <algorithm>
#include <functional>
#include <cstdint>
 
using namespace std;
 
class Stud { 
protected: 
    char *surname;
    int marks[4]; 
    int semester;
public: 
    Stud(); 
    void get(); 
    Stud(const Stud &St);
    friend void exam (Stud &St); 
    ~Stud();
}; 
 
Stud::Stud() {
    surname = new char[20];
}
 
void exam()
{
    std::string surname;
    std::cout << "Фамилия студента ";
    std::cin >> surname;
    if ( std::any_of( std::begin(surname), std::end(surname), std::not1(std::cref(::isalpha)) ) )
        throw std::runtime_error("Names can only contain letters");
 
    const uint32_t min_s = 1, max_s = 20;
    uint32_t semester = min_s;
    do {
        std::cout << "Семестр студента ";
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    } while ( !(std::cin >> semester) || semester < min_s || semester > max_s );
 
    const uint32_t min_m = 0, max_m = 10;
    uint32_t marks[4];
    std::fill_n(marks, 4, min_m);
 
    for (uint32_t i = 0; i < 4u; ++i) {
        do {
            std::cout << "Введите " << i + 1 << " оценку - ";
            std::cin.clear();
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        } while ( !(std::cin >> marks[i]) || marks[i] < min_m || marks[i] > max_m );
    }
    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;
    exam(FIRST_TRY);
    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;
}
Добавлено через 3 часа 8 минут
UP!
 
Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru