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

Разделение программы на интерфейс и реализацию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объявление константы и массива в классе http://www.cyberforum.ru/cpp-beginners/thread716802.html
Задача: 1. объявить константу в созданном классе и сделать ее видимой для всех методов данного класса; 2. объявить массив, размер которого определяет созданная константа. Среда разработки Visual C++ 6.0 В итоге у меня получилось: // MyClass.h: interface for the MyClass class. class MyClass
C++ Объединить два множества! Народ такая вещь дано два множества надо их объединить в одно соответственно без повторов. Есть код задачи, но он слегка не правильный. Он работает только с однозначными числами. Что изменить, чтобы работал со всеми. #include <iostream> using namespace std; int k=0; void addSet(); /*-------------класс Множество-----------*/ class Set { private: http://www.cyberforum.ru/cpp-beginners/thread716800.html
Точность числа с плавающей точкой C++
У типа float числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр. Внимание, вопрос! Объясните, пожалуйста, когда точность 7, а когда 8 цифр. P.S. Примеры приветствуются)
В чём ошибка? C++
#include "stdafx.h" #include "allclass.h" #include <vector> #include <iostream> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv) {
C++ Курсовая по ООП http://www.cyberforum.ru/cpp-beginners/thread716751.html
Одна тема - одно задание. Потрудитесь!
C++ Сортировка строк по алфавиту вот есть допустим такой код.. и мне нужно отсортировать каждый введенный title по алфавиту. Это можно сделать после того как закончишь ввод не обязательно прям во время ввода. язык с++ естественно и желательно ненадо использовать очень сложные алгоритмы я только пол года учу с++. В общем буду рад любой помощи. struct book { char title; char author; }; int main() { int cnt_book = 0; подробнее

Показать сообщение отдельно
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 105
Завершенные тесты: 2
02.12.2012, 22:38  [ТС]     Разделение программы на интерфейс и реализацию
файл head:
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
#pragma once
struct data
{
    int day;
    char* month;
    int year;
};
class person
{
public:
    char* name;
    char* surname;
    char* otchestvo;
    int tell;
    int icq;
    char* mail;
    data date;
 
    person ();
    
    void set_person (char*,char*,char*,char*,int,char*,int,int,int);
    
    void get_person ();
    
    void print_person ();
 
    void file_man(FILE*);
 
    void read_person(FILE*);
    
    ~person ();
    
};
файл person:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <string.h>
#include "head.h"
using namespace std;
person::person ()
    {
        name=NULL;
        surname=NULL;
        otchestvo=NULL;
        date.month=NULL;
        mail=NULL;
        icq=tell=date.day=date.year=0;
 
    }
    void person::set_person (char* aName,char* aSurname,char* aOtchestvo,char* aMail,int aDay,char* aMonth,int aYear,int aTell,int aIcq)
    {
        name=new char [strlen(aName)+1];
        strcpy(name, aName);
        surname=new char [strlen(aSurname)+1];
        strcpy(surname,aSurname);
        otchestvo=new char [strlen(aOtchestvo)+1];
        strcpy(otchestvo,aOtchestvo);
        mail=new char [strlen(aMail)+1];
        strcpy(mail,aMail);
        date.day=aDay;
        date.month=new char [strlen(aMonth)+1];
        strcpy(date.month,aMonth);
        date.year=aYear;
        strcpy(date.month,date.month);
        tell=aTell;
        icq=aIcq;
    }
    void person::get_person ()
    {
        cout<<"vyberite punct=\n1-vyvesti imya studenta\n2-vyvesti datu rogdeniya\n3-vyvesti nomer telefona\n"
            "4-vyvesti mail studenta\n5-vuvesti nomer icq"<<endl;
 
        int a;
        cin>>a;
        switch (a)
        {
        case 1:
            cout<<surname<<"."<<name<<"."<<otchestvo<<endl;
            break;
        case 2:
            cout<<date.day<<"."<<date.month<<"."<<date.year<<endl;
            break;
        case 3:
            cout<<tell;
            break;
        case 4:
 
            cout<<mail;
            break;
        case 5:
            cout<<icq;
            break;
        }
    }
    void person::print_person ()
 
    {
 
        cout<<"name - "<<surname<<"  "<<name<<"  "<<otchestvo<<endl;
        cout<<"date - "<<date.day<<"."<<date.month<<"."<<date.year<<endl;
        cout<<"telephone nomber - "<<tell<<endl;
        cout<<"mail - "<<mail<<endl;
        cout<<"icq nomber - "<<icq<<endl;
    }
    void person::file_man(FILE *afp)
    {
 
        int sz = strlen(name);
        fwrite(&sz,sizeof(sz),1,afp);
        fwrite(name,sz,1,afp);
        int sz1 = strlen(surname);
        fwrite(&sz1,sizeof(sz1),1,afp);
        fwrite(surname,sz1,1,afp);
 
        int sz2 = strlen(otchestvo);
        fwrite(&sz2,sizeof(sz2),1,afp);
        fwrite(otchestvo,sz2,1,afp);
        int sz3 = strlen(mail);
        fwrite(&sz3,sizeof(sz3),1,afp);
        fwrite(mail,sz3,1,afp);
        fwrite(&tell,sizeof (tell),1,afp); 
        fwrite(&icq,sizeof (icq),1,afp);
        fwrite(&date.day,sizeof (date.day),1,afp);
        int sz4 = strlen(date.month);
        fwrite(&sz4,sizeof(sz4),1,afp);
        fwrite(date.month,sz4,1,afp);
        fwrite(&date.year,sizeof (date.year),1,afp);
        
        
 
    }
    void person::read_person(FILE *afp2)
    {
        int sz = 0;
        fread(&sz,sizeof(sz),1,afp2);
        if(name) delete[] name;
        name = new char[sz+1];
        name[sz] = 0;
        fread(name,sz,1,afp2);
        int sz1 = 0;
        fread(&sz1,sizeof(sz1),1,afp2);
        if(surname) delete[] surname;
        surname = new char[sz1+1];
        surname[sz1] = 0;
        fread(surname,sz1,1,afp2);
        int sz2 = 0;
        fread(&sz2,sizeof(sz2),1,afp2);
        if(otchestvo) delete[] otchestvo;
        otchestvo = new char[sz2+1];
        otchestvo[sz2] = 0;
        fread(otchestvo,sz2,1,afp2);
        int sz3 = 0;
        fread(&sz3,sizeof(sz3),1,afp2);
        if(mail) delete[] mail;
        mail = new char[sz3+1];
        mail[sz3] = 0;
        fread(mail,sz3,1,afp2);
        fread(&tell,sizeof (tell),1,afp2); 
        fread(&icq,sizeof (icq),1,afp2);
        fread(&date.day,sizeof (date.day),1,afp2);
        int sz4 = 0;
        fread(&sz4,sizeof(sz4),1,afp2);
        if(date.month) delete[] date.month;
        date.month = new char[sz4+1];
        date.month[sz4] = 0;
        fread(date.month,sz4,1,afp2);
        fread(&date.year,sizeof (date.year),1,afp2);
 
    }
    
 
    person::~person ()
    {
        delete[] name;
        delete[] surname;
        delete[] mail;
        delete[] otchestvo;
    }
файл main:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include "head.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void main()
{
int size=0;
person** mas=new person *[size];
char name[200];
char surname[200];
char otchestvo[200];
char mail [200];
int tell;
int icq;
int day;
int year;
char month[20];
int menu;
bool i=true;
while (i)
{
    cout<<"\n\n";
    cout<<"***********Please choose a necessary point**************\n";
    cout<<"1-to enter information about an user\n2-search of user and request for concrete information\n"
        "3-conclusion of all information about a concrete user\n4-file wfite\n5-file read\n6-exit\n";
 
    
    cin>>menu;
    
    switch (menu)
    {
    case 1:  //реализация метода ввода необходимо задать количество пользователей, которых буду вводить.
        cout << "___________Please enter the amount of users for the method of input:\n";
        cin>>size;
        
        for (int i=0;i<size;i++){
            cout<<"******person number"<<i+1<<" *****\n";
            mas[i]=new person;
            cout<<"please enter surname=";
            cin>>surname;
            cout<<"please enter name=";
            cin>>name;
            cout<<"please enter patronymic=";
            cin>>otchestvo;
            cout<<"please enter email=";
            cin>>mail;
            cout<<"please enter birsday=";
            cin>>day;
            cout<<"please enter month of birth=";
            cin>>month;
            cout<<"please enter year of birth=";
            cin>>year;
            cout<<"please enter telephone of user number=";
            cin>>tell;
            cout<<"please enter ICQ of user number=";
            cin>>icq;
            mas[i]->set_person (name,surname,otchestvo,mail,day,month,year,tell,icq);
            cout<<"------------------------------------------------------\n";
 
        }
        break;
        //________________________________________________________________________________________________________
    case 2:          //реализация метода поиска пользователя по фамилии
        char fam [20];
        cout<<"vvedite familiy personu=\n";
        cin>>fam;
 
        for(int i=0;i<size;i++)
        {
            
            if (stricmp(fam,mas[i]->surname)==0)
                mas[i]->get_person();
            
        }
        break;
 
    case 3: //реализация вывода всех сведений о пользователе        
        cout<<"vvedite nomer persony dlya vivoda vsex dannux\n";
        int r;
        cin>>r;
        if (*mas[r-1]->name!=NULL)
        {
            mas[r-1]->print_person ();
        }
        break;
 
        cout<<"file manager\n";
    case 4://запись в файл
        {
            FILE *fp=fopen("first.txt","wb");
            if (!fp)
            {
                cout<<"error";
                _getch();   
                return;
            }
            for (int i=0;i<size;i++)
            {
                mas[i]->file_man(fp);  
            }
            
            fclose(fp);
        }
        break;
    case 5://чтение из файла
        {
            
            FILE* fp2=fopen("first.txt","rb");
            if (!fp2)
            {
                cout<<"error";
                _getch();   
                return;
            }
            
            cout<<"Please enter the amount of users which must be counted from a file\n";
            cin>>size;
            for(int i=0;i<size;i++)
            {
                mas[i]=new person;
                mas[i]->read_person(fp2);
 
            }
            for(int i=0;i<size;i++)
            {
 
 
                cout<<"person "<<i+1<<":\n"<<"name:"<<mas[i]->name<<
                    " "<<mas[i]->surname<<" "<<mas[i]->otchestvo<<"\n"<<
                    "e-mail:"<<mas[i]->mail<<endl;
                cout<<"birsday:"<<mas[i]->date.day<<"."<<mas[i]->date.month<<"."<<mas[i]->date.year<<"\n";
                cout<<"nomber telephone:"<<mas[i]->tell<<"\n";
                cout<<"nomber ICQ:"<<mas[i]->icq<<"\n";
            }
            fclose(fp2);
        }   
        break;
 
        case 6:
    
    exit(0);
    
    
}
    }
    
delete[] mas;
 
}
Добавлено через 1 минуту
Если в одном файле *.cpp то всё работает идеально.
 
Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru