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

Описать структуру с именем NOTE - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
27.04.2013, 17:06     Описать структуру с именем NOTE #1
Помогите с программой пожалуйста.
А. Описать структуру с именем NOTE, содержащую следущие поля:
Фамилия, имя;
Номер телефона;
День рождения(массив из трех чисел).
Ввести с клавиатуры данные о 10 абонентах, записи упорядочить по трем первым цыфрам номера телефона;
Б. Написать программу, выполняющую следующие действия:
Вывод на экран информации о человеке, чья фамилия введенна с клавиатуры;
Если такого нет, выдать на дисплей соотвествующее сообщение.

помогите с сортировкой по первым трем числам номера телефона.
Код:

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
#include <iostream>
#include <algorithm>
#include <conio.h>
using namespace std; 
struct NOTE
{
    char m_Name[30];
    int m_PhoneNum;
    int m_BirthYear;
    int m_BirthMonth;
    int m_BirthDay;
};
 
NOTE ReadNote()
{
    NOTE ret_val;
    std::cout << "Name: ";
    gets(ret_val.m_Name);
    std::cout << "Phone number: ";
    std::cin >> ret_val.m_PhoneNum;
    std::cout << "Birthday (DD.MM.YYYY): ";
    std::cin >> ret_val.m_BirthDay >> ret_val.m_BirthMonth >> ret_val.m_BirthYear;
    std::cout << std::endl;
    std::cin.get();
 
    return ret_val;
}
 
bool operator == (const NOTE& note, const std::string& name)
{
    return note.m_Name == name;
}
 
std::ostream& operator << (std::ostream& os, const NOTE& note)
{
    std::cout << "Name: " << note.m_Name << std::endl;
    std::cout << "Phone number: " << note.m_PhoneNum << std::endl;
    std::cout << "Birthday: " << note.m_BirthDay << "." << note.m_BirthMonth << "." << note.m_BirthYear << std::endl;
 
    return os;
}
 
int main(int, char**)
{char otv;
do 
{ 
    NOTE notes[2];
    int n_notes = sizeof(notes) / sizeof(notes[0]);
    
    std::generate(notes, notes + n_notes, ReadNote);
 
    std::cout << "Person name: ";
    std::string name;
    std::cin >> name;
    NOTE* p = std::find(notes, notes + n_notes, name);
    if (p == notes + n_notes)
        std::cout << "There is no person '" << name << "'" << std::endl;
    else
        std::cout << *p;
        std::cout<<"Hotite prodoljit?(y/n): ";
   std::cin>>(otv);
}while(otv=='y');
std::cout<<"the end.";
    getch();    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 17:06     Описать структуру с именем NOTE
Посмотрите здесь:

Описать структуру с именем NOTE C++
C++ Описать структуру с именем NOTE
C++ Описать структуру с именем NOTE
Описать структуру с именем NOTE C++
C++ Описать структуру с именем NOTE
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
27.04.2013, 17:34     Описать структуру с именем NOTE #2
Sergey3096, телефон, наверное, лучше хранить в массиве типа char, а далее можно и qsort, либо std::sort.


Цитата Сообщение от Sergey3096 Посмотреть сообщение
День рождения(массив из трех чисел).
у вас же не массив, а просто три переменные.
Имя и фамилию логичнее было бы разделить, вдобавок по заданию легче будет осуществлять поиск по заданному параметру.
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
27.04.2013, 17:43  [ТС]     Описать структуру с именем NOTE #3
спасибо за помощь)
но все ровно я не знаю как сортировку придумать(
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
27.04.2013, 17:45     Описать структуру с именем NOTE #4
Sergey3096, через strcmp.
Вот пример сортировки массива строк на С
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* Г§Г*ìåГ*Г* äâóõ ñòðîê ìåñòГ*ìè */
void swapstr(char *s1, char *s2)
{
    char *tmp = malloc(strlen(s1) + 1);
    strcpy(tmp, s1);
    strcpy(s1, s2);
    strcpy(s2, tmp);
    free(tmp);
}
 
/* ñîðòèðîâêГ* Г¬Г*Г±Г±ГЁГўГ* ñòðîê ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ */
void sort(char **str, const int size)
{
    int i, j;
    for (i=0; i < size; i++)
        for (j=i-1; j >= 0; j--)
            if (strcmp(str[i], str[j]) < 0)
                swapstr(str[i], str[j]);
}
Для С++ все проще. Там есть std::sort из STL и std::string, у которых оператор < перегружен.
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
27.04.2013, 18:04  [ТС]     Описать структуру с именем NOTE #5
можете сделать код сами пожалуйста у меня не чего не получается(
я С++ месяц изучаю только...
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
27.04.2013, 18:13     Описать структуру с именем NOTE #6
Цитата Сообщение от MrGluck Посмотреть сообщение
void swapstr(char *s1, char *s2)
{
* * char *tmp = malloc(strlen(s1) + 1);
* * strcpy(tmp, s1);
* * strcpy(s1, s2);
* * strcpy(s2, tmp);
* * free(tmp);
}
Может все таки так?)
C++
1
2
3
4
5
6
void swapstr(char** str1, char** str2)
{ 
    char *temp = *str1;
    *str1 = *str2;
    *str2 = temp;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
27.04.2013, 19:20     Описать структуру с именем NOTE #7
stima, да, я перемудрил
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
27.04.2013, 20:17     Описать структуру с именем NOTE #8
сортировка
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
#include <iostream>
#include <algorithm>
#include <conio.h>
#include <string>
#include <cstring>
using namespace std;
 
struct Note
{
    char m_Name[30];
    char m_PhoneNum[15];
    int m_BirthYear;
    int m_BirthMonth;
    int m_BirthDay;
};
 
Note ReadNote()
{
    Note ret_val;
    std::cout << "Name: ";
    std::cin.clear();
    std::cin.sync();
    gets(ret_val.m_Name);
    std::cout << "Phone number: ";
    std::cin >> ret_val.m_PhoneNum;
    std::cout << "Birthday (DD.MM.YYYY): ";
    std::cin >> ret_val.m_BirthDay;
    std::cin.get();
    std::cin >> ret_val.m_BirthMonth;
    std::cin.get();
    std::cin >> ret_val.m_BirthYear;
    std::cout << std::endl;
    std::cin.get();
 
    return ret_val;
}
 
bool operator == (const Note& note, const std::string& name)
{
    return note.m_Name == name;
}
 
bool operator< (Note const& note1, Note const& note2)
{
    return strncmp(note1.m_PhoneNum, note2.m_PhoneNum, 3);
}
 
std::ostream& operator << (std::ostream& os, const Note& Note)
{
    std::cout << "Name: " << Note.m_Name << std::endl;
    std::cout << "Phone number: " << Note.m_PhoneNum << std::endl;
    std::cout << "Birthday: " << Note.m_BirthDay << "." << Note.m_BirthMonth << "." << Note.m_BirthYear << std::endl;
 
    return os;
}
 
int main(int, char**)
{
    char otv;
    do
    {
        Note Notes[2];
        int n_Notes = sizeof(Notes) / sizeof(Notes[0]);
 
        std::generate(Notes, Notes + n_Notes, ReadNote);
        std::sort(Notes, Notes + n_Notes);
        for(int i = 0; i < n_Notes; ++i)
        {
            std::cout << Notes[i] << "\n\n";
        }
        std::cout << "Person name: ";
        std::cin.clear();
        std::cin.sync();
        std::string name;
        std::getline(std::cin, name);
        Note* p = std::find(Notes, Notes + n_Notes, name);
        if (p == Notes + n_Notes)
            std::cout << "There is no person '" << name << "'" << std::endl;
        else
            std::cout << *p;
            std::cout<<"Hotite prodoljit?(y/n): ";
       std::cin>>(otv);
    }
    while(otv == 'y');
    std::cout<<"the end.";
    getch();
    return 0;
}
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
28.04.2013, 01:25  [ТС]     Описать структуру с именем NOTE #9
спасибо)
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
06.05.2013, 14:18  [ТС]     Описать структуру с именем NOTE #10
Задача: Вводить данные в соответствии приведенной ниже структуре. Введенные данные сохранять в файле структур. Если файл уже существует, отразить его содержимое на экран монитора, а затем позволить добавить в него новые данные. Новые данные вводить в массив структур mas, а затем весь массив (нужное количество записей, то есть без учета того, что в нем уже находилось раньше) записать в файл.
Описать структуру с именем NOTE, содержащую следующие поля:
Фамилия, имя;
Номер домашнего телефона;
Номер мобильного телефона;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 14:20     Описать структуру с именем NOTE
Еще ссылки по теме:

Описать структуру с именем Note C++
C++ Описать структуру с именем NOTE
Описать структуру с именем NOTE C++

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

Или воспользуйтесь поиском по форуму:
hofmn
Helter Skelter
 Аватар для hofmn
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
06.05.2013, 14:20     Описать структуру с именем NOTE #11
C++
1
2
3
4
5
6
7
struct NOTE
{
    string lastname;
    string name;
    int homePhoneNumber;
    int mobilePhoneNumber;
};
Yandex
Объявления
06.05.2013, 14:20     Описать структуру с именем NOTE
Ответ Создать тему

Метки
описать структуру note, описать структуру note c++, описать структуру с именем note c++, описать структуру с именем note, структура note, структура note c++, структуры, структуры c++, структуры данных, структуры данных c++
Опции темы

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