Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
0 / 0 / 1
Регистрация: 17.12.2012
Сообщений: 35
1

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

27.04.2013, 17:06. Показов 5296. Ответов 10

Author24 — интернет-сервис помощи студентам
Помогите с программой пожалуйста.
А. Описать структуру с именем 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 17:06
Ответы с готовыми решениями:

Описать структуру с именем NOTE
Помогите пожалуйста с прогой.. В чём ошибка? ии как упорядочить по дате рождения? Задание звучит...

Описать структуру с именем NOTE
Народ почти не знаю С++ но нужно написать вот прогу желательно на Буилдере 1. Описать структуру...

Описать структуру с именем NOTE
Создать однофайловое консольное приложение (проект). В этом проекте описать структуру,...

Описать структуру с именем NOTE
Описать структуру с именем NOTE, содержащую поля: -фамилия и имя; -номер телефона; -дата...

10
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.04.2013, 17:34 2
Sergey3096, телефон, наверное, лучше хранить в массиве типа char, а далее можно и qsort, либо std::sort.


Цитата Сообщение от Sergey3096 Посмотреть сообщение
День рождения(массив из трех чисел).
у вас же не массив, а просто три переменные.
Имя и фамилию логичнее было бы разделить, вдобавок по заданию легче будет осуществлять поиск по заданному параметру.
0
0 / 0 / 1
Регистрация: 17.12.2012
Сообщений: 35
27.04.2013, 17:43  [ТС] 3
спасибо за помощь)
но все ровно я не знаю как сортировку придумать(
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.04.2013, 17:45 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, у которых оператор < перегружен.
0
0 / 0 / 1
Регистрация: 17.12.2012
Сообщений: 35
27.04.2013, 18:04  [ТС] 5
можете сделать код сами пожалуйста у меня не чего не получается(
я С++ месяц изучаю только...
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
27.04.2013, 18:13 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;
}
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.04.2013, 19:20 7
stima, да, я перемудрил
0
23 / 23 / 14
Регистрация: 15.04.2013
Сообщений: 62
27.04.2013, 20:17 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;
}
1
0 / 0 / 1
Регистрация: 17.12.2012
Сообщений: 35
28.04.2013, 01:25  [ТС] 9
спасибо)
0
0 / 0 / 1
Регистрация: 17.12.2012
Сообщений: 35
06.05.2013, 14:18  [ТС] 10
Задача: Вводить данные в соответствии приведенной ниже структуре. Введенные данные сохранять в файле структур. Если файл уже существует, отразить его содержимое на экран монитора, а затем позволить добавить в него новые данные. Новые данные вводить в массив структур mas, а затем весь массив (нужное количество записей, то есть без учета того, что в нем уже находилось раньше) записать в файл.
Описать структуру с именем NOTE, содержащую следующие поля:
Фамилия, имя;
Номер домашнего телефона;
Номер мобильного телефона;
0
Helter Skelter
64 / 64 / 19
Регистрация: 19.09.2012
Сообщений: 133
06.05.2013, 14:20 11
C++
1
2
3
4
5
6
7
struct NOTE
{
    string lastname;
    string name;
    int homePhoneNumber;
    int mobilePhoneNumber;
};
0
06.05.2013, 14:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 14:20
Помогаю со студенческими работами здесь

Описать структуру с именем NOTE
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #define N 15 #define M 8 struct...

Описать структуру с именем NOTE
Помогите пожалуйста с программой в C++ Вот задание: Описать структуру с именем NOTE, содержащую...

Описать структуру с именем NOTE
описать структуру с именем NOTE cодержаще следущее поля 1) фамилия , имя 2) номер телефона ...

Описать структуру с именем NOTE
2.вывод на экран записей, которые должны быть упорядочены по алфавиту; Не могу понять в чем смысл...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru