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

классы - C++

Восстановить пароль Регистрация
 
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
01.04.2011, 19:23     классы #1
1.Описать класс с именем NOTE, содержащий следующие поля: фамилия, имя; номер телефона; день рождения (массив из трех чисел). 2.Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона; вывод на экран информации о человеке, чья фамилия введена с клавиатуры; если такого нет, выдать на дисплей соответствующее сообщение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 19:23     классы
Посмотрите здесь:

C++ Классы
Классы C++
Классы C++
C++ классы с++
Классы в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
02.04.2011, 11:15     классы #2
Общий принцип:
костяк
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
#include<assert.h>
#include<iostream>
#include<string>
static const int N = 3;             //количество "карточек" в массиве
static const int char_size = 256;   
 
class note{
    public:
        char family_name[char_size];
        int phone;
        // и остальное.
    private:
        //nothing.
};
 
void add(note* const a, const int i);   //заполняет i-тую "карточку"
void search(const char* const person, 
            const note* const a);       //Поиск карточки по фамилии
void gsort(note* const a);              //очевидно сортировка.          
 
int main(void){
    note a[N];
    //заполняем:
    for(int i = 0; i<N; i++) add(a,i);
    
    //сортируем:
    std::cout<<"==================================="<<std::endl;
    for(int i = 0;i<N; i++)
        std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;
    
    gsort(a);
    
    std::cout<<"==================================="<<std::endl;
    for(int i = 0;i<N; i++)
        std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;
        
        
    //Ищем человека:
    std::cout<<"кого ищем? : ";
    char person[char_size];
    std::cin>>person;
    
    search(person,a);
    
return 0;
}
 
void add(note* const a, const int i){
    assert((a!=NULL)&&(i>=0)&&(i<N));
    
    //тут красивые запросы с проверкой вводимых данных.
    //у нас - фамилия и телефон через пробел.
    std::cin>>a[i].family_name>>a[i].phone;
}
 
void search(const char* const person, const note* const a){
    assert( (a!=NULL)&&(person!=NULL)&&(N>0) );
    //ниже должно быть красивое оформление и вывод всех данных
    // по найденой карточке.
    for(int i = 0;i<N; i++){
        if(!strcmp(a[i].family_name, person)){
            std::cout<<"найдено :";
            std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;
            return;
        }
    }
    std::cout<<"не найдено.";
}
 
 
void gsort(note* const a){
    assert((a!=NULL)&&(N>0));
    //гномья, разнообразия для:
    int iterator = 1;
    while(iterator<N){
        if (a[iterator-1].phone > a[iterator].phone)
        {
            iterator++;}
        else{
            //обмен значениями (лучше написать функцию swap(a,b))
            char str[char_size];
            std::strcpy(str,a[iterator].family_name);
            std::strcpy(a[iterator].family_name,
                                a[iterator-1].family_name);
            std::strcpy(a[iterator-1].family_name,str);
            
            int tmp = a[iterator].phone;
            a[iterator].phone = a[iterator-1].phone;
            a[iterator-1].phone = tmp;
            //продолжаем:
            
            iterator--;
            if (iterator == 0) iterator = 1;
        }
    }
    //отсортировано по убыванию.
}

Осталось расширить класс именами, должностями,праздниками. Привести ввод/вывод в нормальное состояние менюшки по желанию и прочие "красивости".
зы: код рабочий.
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 14:33  [ТС]     классы #3
Vladimir., он мне ничего не выводит, просто компилируется и все . Окно просто пустое
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
04.04.2011, 14:42     классы #4
C++
1
2
3
4
5
6
7
void add(note* const a, const int i){
        assert((a!=NULL)&&(i>=0)&&(i<N));
        
        //тут красивые запросы с проверкой вводимых данных.
        //у нас - фамилия и телефон через пробел.
        std::cin>>a[i].family_name>>a[i].phone;
}
C++
1
2
3
4
5
6
7
8
void add(note* const a, const int i){
        assert((a!=NULL)&&(i>=0)&&(i<N));
        
        //тут красивые запросы с проверкой вводимых данных.
        //у нас - фамилия и телефон через пробел.
std::cout<<"\nфамилию и телефон через пробел введите пожалуйста."<<std::endl;
        std::cin>>a[i].family_name>>a[i].phone;
}
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 15:32  [ТС]     классы #5
только в этом месте надо?

Добавлено через 43 минуты
если только тут, то не получается, он мне какие то иероглифы выводит
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
04.04.2011, 15:41     классы #6
если только тут, то не получается, он мне какие то иероглифы выводит

читаем
Yandex
Объявления
04.04.2011, 15:41     классы
Ответ Создать тему
Опции темы

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