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

Работа с файлами и структурами. Создать "меню" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ определить в массиве длину самого длинного ряда повторяющихся чисел http://www.cyberforum.ru/cpp-beginners/thread544715.html
Помогите пожалуйста решить данную задачу. Заранее огромное спасибо
C++ Помощь в подсчете минора матрицы Здравствуйте, друзья. Препод сказал, чтобы я циклы подсчета минора матрицы... int Minor(int A,int size,int row) { int Buf; for(int i=0;i<row;i++) for(int j=1;j<size;j++) Buf=A; http://www.cyberforum.ru/cpp-beginners/thread544711.html
Считать строку C++
Занести в файл А 10 фамилий. Считать N-ю фамилию от конца файла А и вывести ее на экран. N ввести с клавиатуры. Как именно выделить эту N фамилию? Если можно приведите фрагмент кода.
C++ Проблема с суммой.
#include <iostream> using namespace std; int main() { int b ; int n,m,k=0,s=0; cout<<"Enter n and m\n"; cin>>n>>m; for(int j=0; j<m; j++)
C++ [!]Ошибки в коде. http://www.cyberforum.ru/cpp-beginners/thread544666.html
#include <iostream> #include <conio.h> #include <assert.h> using namespace std; struct element { int v; struct element * next;
C++ Наследование 1) Определить класс корова состоящее из следующих полей: идентификационный номер – должно быть гарантировано уникально (для чего использовать статический счетчик), средний надой, возраст, кличку и породу. Определить класс стадо, состоящее из неограниченного количества коров. 2) Определить методы вставки, удаление, определения среднего надоя по стаду и общий надой, и другие необходимые функции.... подробнее

Показать сообщение отдельно
And555
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 3
10.04.2012, 21:46     Работа с файлами и структурами. Создать "меню"
!!! Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. !!!

Условие: Создайте записную книгу в виде динамического массива структур “Абонент”. Каждый абонент является структурой, содержащей следующие поля: имя, фамилия, дата рождения (структура “Дата”), возраст (рассчитывается по дате рождения), телефон. Изначально книга пуста. Предусмотрите функции по добавлению, удалению абонентов из книги, печати всей книги на экран, а также записи книги в файл и чтения из файла. Желаемое действие выбирайте с помощью меню.

Помогите сделать меню!

Решение (за полностью предоставленную программ большое спасибо "borisbn"):
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
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <string.h>
#include <algorithm>
#include <fstream>
#include <time.h>
struct Date {
    int day;
    int month;
    int year;
};
const int MAX_FIRSTNAME = 100;
const int MAX_LASTNAME = 200;
const int MAX_PHONE = 20;
struct Abonent {
    char firstName[ MAX_FIRSTNAME ];
    char lastName[ MAX_LASTNAME ];
    Date birthDay;
    int age;
    char phone[ MAX_PHONE ];
};
void countAge( Abonent & abonent ) {
    time_t rawtime;
    time ( &rawtime );
    tm current = *(localtime( &rawtime ));
    abonent.age = current.tm_year - abonent.birthDay.year;
}
bool operator==( const Abonent & left, const Abonent & right ) {
    return std::string( left.firstName ) == std::string( right.firstName ) &&
           std::string( left.lastName ) == std::string( right.lastName );
}
std::ostream & operator<<( std::ostream & os, const Abonent & abonent ) {
    Abonent abonentForAge = abonent;
    countAge( abonentForAge );
    os << abonent.firstName << " " << abonent.lastName << ":" << std::endl;
    os << "    birthDay : " << abonent.birthDay.day << "." << abonent.birthDay.month << "." << abonent.birthDay.year << std::endl;
    os << "    age : " << abonentForAge.age << std::endl;
    os << "    phone : " << abonent.phone << std::endl;
    return os;
}
typedef std::vector< Abonent > AddressBook;
void addAbonent( AddressBook & addressBook, const Abonent & abonent ) {
    Abonent abonentToAdd = abonent;
    countAge( abonentToAdd );
    addressBook.push_back( abonentToAdd );
}
void addAbonent( AddressBook & addressBook, const char * firstName, const char * lastName, int day, int month, int year, const char * phone ) {
    Abonent abonent;
    strcpy( abonent.firstName, firstName );
    strcpy( abonent.lastName, lastName );
    abonent.birthDay.day = day;
    abonent.birthDay.month = month;
    abonent.birthDay.year = year;
    strcpy( abonent.phone, phone );
    addAbonent( addressBook, abonent );
}
void deleteAbonent( AddressBook & addressBook, const Abonent & abonent ) {
    AddressBook::iterator found = std::find( addressBook.begin(), addressBook.end(), abonent );
    if ( found != addressBook.end() ) {
        addressBook.erase( found );
    }
}
void printAddressBook( const AddressBook & addressBook ) {
    std::copy( addressBook.begin(), addressBook.end(), std::ostream_iterator< Abonent >( std::cout, "\n" ) );
}
void saveAddressBookToFile( const AddressBook & addressBook, const char * fileName ) {
    std::ofstream file( fileName, std::ofstream::binary );
    if ( ! file ) {
        return;
    }
    for ( AddressBook::const_iterator it = addressBook.begin(), end = addressBook.end(); it != end; ++it ) {
        file.write( (char*)&(*it), sizeof( *it ) );
    }
}
void loadAddressBookFromFile( AddressBook & addressBook, const char * fileName ) {
    std::ifstream file( fileName, std::ofstream::binary );
    if ( ! file ) {
        return;
    }
    Abonent abonent;
    while ( ! file.eof() ) {
        file.read( (char*)&abonent, sizeof( abonent ) );
        if ( ! file.fail() ) {
            addAbonent( addressBook, abonent );
        }
    }
}
int main()
{
    AddressBook book;
    addAbonent( book, "Freddy", "Kruger", 1, 11, 1980, "911" );
    addAbonent( book, "Arnold", "Schwartz(enough...)", 2, 6, 1960, "+009876543210" );
    
    printAddressBook( book );
    Abonent freddy;
    strcpy( freddy.firstName, "Freddy" );
    strcpy( freddy.lastName, "Kruger" );
    deleteAbonent( book, freddy );
    
    std::cout << "freddy deleted:" << std::endl;
    printAddressBook( book );
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru