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

Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Конвертер текстового файла http://www.cyberforum.ru/cpp-beginners/thread439174.html
Добрый день!!! Простите за наглость... Помогите пожалуйста написать программу-конвертер текстовых файлов из dos в windows и обратно. С командной строки должно вводится направление /d или /w. Я очень мало в этом понимаю. Заранее спасибо!!!
C++ Проблема с libmms - ошибка при компиляции. Здравствуйте. Уже который день не могу разобраться с упомянутой в заголовке библиотекой, а именно: пишу примерно такой тестовый код #include <iostream> #include <libmms/mms.h> int main() { mms_t *stream; char mms_link="mms://audio.rfn.ru/radiorus/audio/710/90.asf"; stream=mms_connect(0, 0, mms_link, 128); http://www.cyberforum.ru/cpp-beginners/thread439169.html
C++ Привет. Как можна найти с даного примера умножение элементов массива с четными номерами?
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main(int argc, _TCHAR* argv)
C++ Начало DEV С++
Здравствуйте, подскажите где ошибка? Задание Даны действительные числа х, у . Если х, у отрицательные то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательные и ни одно из них не принадлежат отрезку , то оба значения уменьшить в 10 раз; в остальных случаях х, у оставить без изменения. Решение ...
C++ Запись текста в файл http://www.cyberforum.ru/cpp-beginners/thread439138.html
Нужно составить прогрумма которая создает файл и записывает в него текст. Программа не записывает в файл текст после пробела, помогите пожалуйста. char name; char text; cout<<"vvedite put' i im9 faila:\n"; cin>>name; ofstream out(name); cout<<"vvedite text:\n"; cin>>text; out<<text; out.close();
C++ allocator std::map Подскажите вопрос, есть тестовое задание: Написать allocator для std::map, располагающий элементы контейнера последовательно в памяти. Подскажите где про это почитать и разъясните по-возможности, что это вообще такое (std::map я вкурсе что это контейнер и как с ним работать) в ступор вводит allocator подробнее

Показать сообщение отдельно
Ferrari F1
Заблокирован
296 / 282 / 62
Регистрация: 27.01.2015
Сообщений: 1,901
Записей в блоге: 1
Завершенные тесты: 1
27.03.2015, 11:43     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Глава 12


Номер 1

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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <windows.h>
using namespace std;
 
class Distance
{
    int feet;
    float inches;
public:
    Distance() : feet(0), inches(0)
    {}
    Distance(int ft, float in) : feet(ft), inches(in)
    {}
    void set()
    {
        cout << "Введите футы" << endl;
        cin >> feet;
        cout << "Введите дюймы" << endl;
        cin >> inches;
    }
    void showdist() const
    {
        cout << feet << "\'-" << inches << '\"';
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    fstream file("text.txt", ios::ate | ios::out | ios::in | ios::binary);
    Distance* dist = new Distance;
    char ch(0);
    do
    {
        cout << "Введите информацию для записи в файл." << endl;
        dist->set();
        file.write((char*)dist, sizeof(*dist));
        cout << "Повторить ввод? (y/n)" << endl;
        cin >> ch;
    } while (ch == 'y');
    file.seekg(0);
    while (file.read((char*)dist, sizeof(*dist)))
    {
        dist->showdist();
        cout << endl;
    }
    cout << endl;
    system("pause");
    return 0;
}


Номер 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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <windows.h>
#include <process.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    if (argc != 3)
    {
        cerr << "Формат команды: путь имя_файла";
        exit(-1);
    }
    ifstream input(argv[1]);
    if (!input)
    {
        cerr << "\nНевозможно открыть " << argv[1];
        exit(-1);
    }
    ofstream output(argv[2], ios::trunc);
    if (!output)
    {
        cerr << "\nНевозможно открыть " << argv[2];
        exit(-1);
    }
    output << input.rdbuf();
    system("pause");
    return 0;
}


Номер 3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <iomanip>
#include <fstream>
#include <windows.h>
#include <process.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    if (argc != 2)
    {
        cerr << "Формат команды: путь имя_файла";
        exit(-1);
    }
    ifstream file(argv[1], ios::ate);
    cout << "Размер файла равен: " << file.tellg() << " байт." << endl;
    system("pause");
    return 0;
}


Номер 4

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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string name;
    unsigned long number;
    char ch(0);
    ofstream output("text.txt", ios::trunc);
    do
    {
        cout << "Введите фамилию, имя, отчество сотрудника." << endl;
        getline(cin, name);
        cout << "Введите номер сотрудника." << endl;
        cin >> number;
        output << '\n' << name << '\n' << number;
        cout << "Продолжить ввод? (y/n)" << endl;
        cin >> ch;
        cin.clear();
        cin.sync();
    } while (ch == 'y');
    output.close(); cout << endl;
    ifstream input("text.txt");
    input.ignore(1);
    while (getline(input, name))
    {
        cout << "Фамилия, имя, отчество сотрудника:" << endl;
        cout << name << endl;
        input >> number;
        cout << "Номер сотрудника:" << endl;
        cout << number << '\n' << endl;
        input.ignore(1);
    }
    system("pause");
    return 0;
}


Номер 5

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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
class Time
{
    short h, m, s;
public:
    void get_time()
    {
        while (1)
        {
            cout << "Введите часы: ";
            cin >> h;
            if (cin && h < 24)
            {
                cin.clear(); cin.sync(); break;
            }
            cin.clear(); cin.sync(); system("cls");
        }
        while (1)
        {
            cout << "Введите минуты: ";
            cin >> m;
            if (cin && m < 60)
            {
                cin.clear(); cin.sync(); break;
            }
            cin.clear(); cin.sync();
        }
        while (1)
        {
            cout << "Введите секунды: ";
            cin >> s;
            if (cin && s < 60)
            {
                cin.clear(); cin.sync(); break;
            }
            cin.clear(); cin.sync();
        }
    }
    void put_time() const
    {
        cout << "\nВремя: " << endl;
        cout << h << ':' << m << ':' << s << endl;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Time* t;
    for (char ch('a'); ch != '\n';)
    {
        t = new Time;
        t->get_time();
        t->put_time();
        delete t;
        cout << "Повторить ввод?" << endl;
        cin.unsetf(ios::skipws);
        cin >> ch;
        cin.sync();
        cin.clear();
    }
    system("pause");
    return 0;
}


Номер 6

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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <windows.h>
using namespace std;
 
class name
{
    string str;
    unsigned short number;
    friend ofstream& operator<<(ofstream& out, name& objname)
    {
        cout << "Введите фамилию, имя, отчество сотрудника." << endl;
        getline(cin, objname.str);
        cout << "Введите номер сотрудника." << endl;
        cin >> objname.number;
        out << '\n' << objname.str << '\n' << objname.number;
        return out;
    }
    friend ifstream& operator>>(ifstream& in, name& objname)
    {
        in.ignore(1);
        while (getline(in, objname.str))
        {
            cout << "Фамилия, имя, отчество сотрудника:" << endl;
            cout << objname.str << endl;
            in >> objname.number;
            cout << "Номер сотрудника:" << endl;
            cout << objname.number << '\n' << endl;
            in.ignore(1);
        }
        return in;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    name str;
    char ch(0);
    ofstream output("text.txt", ios::trunc);
    do
    {
        output << str;
        cout << "Продолжить ввод? (y/n)" << endl;
        cin >> ch;
        cin.clear();
        cin.sync();
    } while (ch == 'y');
    output.close(); cout << endl;
    ifstream input("text.txt");
    input >> str;
    system("pause");
    return 0;
}


Номер 7

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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <windows.h>
using namespace std;
 
class name
{
    string str;
    unsigned short number;
    static fstream namestream;
public:
    void write()
    {
        cout << "Введите фамилию, имя, отчество сотрудника." << endl;
        getline(cin, str);
        cout << "Введите номер сотрудника." << endl;
        cin >> number;
        namestream << '\n' << str << '\n' << number;
    }
    static void openstream()
    {
        namestream.open("text.txt", ios::trunc | ios::in | ios::out);
    }
    static void readclose(name& arg)
    {
        namestream.seekg(0);
        namestream.ignore(1);
        while (getline(namestream, arg.str))
        {
            cout << "Фамилия, имя, отчество сотрудника:" << endl;
            cout << arg.str << endl;
            namestream >> arg.number;
            cout << "Номер сотрудника:" << endl;
            cout << arg.number << '\n' << endl;
            namestream.ignore(1);
        }
        namestream.close();
    }
};
 
fstream name::namestream;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    name str;
    char ch(0);
    name::openstream();
    do
    {
        str.write();
        cout << "Продолжить ввод? (y/n)" << endl;
        cin >> ch;
        cin.clear();
        cin.sync();
    } while (ch == 'y');
    system("cls");
    name::readclose(str);
    system("pause");
    return 0;
}


Номер 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
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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <windows.h>
using namespace std;
 
struct link
{
    int data;
    link* next;
};
 
class linklist
{
    link* first;
public:
    linklist()
    {
        first = 0;
    }
    void additem(int d);
    void display();
    friend ofstream& operator<<(ofstream& output, linklist& list)
    {
        link* current = list.first;
        while (current)
        {
            output << '\n' << current->data;
            current = current->next;
        }
        return output;
    }
    friend ifstream& operator>>(ifstream& input, linklist& list)
    {
        input.seekg(0);
        input.ignore(1);
        short temp;
        while (input >> temp)
        {
            list.additem(temp);
            input.ignore(1);
        }
        return input;
    }
};
 
void linklist::additem(int d)
{
    link* newlink = new link;
    newlink->data = d;
    newlink->next = first;
    first = newlink;
}
 
void linklist::display()
{
    link* current = first;
    while (current)
    {
        cout << current->data << endl;
        current = current->next;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    linklist* li = new linklist;
    char ch(0);
    while (ch != 'n')
    {
        cout <<
            "Для добавления ссылки в список нажмите 1.\n"
            "Для показа данных по всем ссылкам из списка нажмите 2.\n"
            "Для записи в файл данных для всех ссылок нажмите 3.\n"
            "Для считывания всех данных из файла нажмите 4.\n" << endl;
        short z;
        cin >> z;
        ofstream output;
        ifstream input;
        switch (z)
        {
        case 1:
            li->additem(25);
            li->additem(36);
            li->additem(49);
            li->additem(64);
            break;
        case 2:
            cout << "\nСодержимое линейного списка:" << endl;
            li->display();
            break;
        case 3:
            cout << "\nПроизводится запись данных..." << endl;
            output.open("text.txt", ios::trunc);
            output << *li;
            output.close();
            break;
        case 4:
            cout << "\nПроизводится чтение данных...\n" << endl;
            input.open("text.txt");
            delete li;
            li = new linklist;
            input >> *li;
            input.close();
            li->display();
            break;
        default: cout << "\nВведена неверная цифра" << endl;
        }
        cout << "\nПовторить? (y/n) ";
        cin >> ch;
        cout << endl;
    }
    system("pause");
    return 0;
}


Номер 9

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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
using namespace std;
 
class fraction
{
    __int32 a, b;
public:
    fraction() : a(0), b(1)
    {}
 
    fraction(__int32 c, __int32 d) : a(c), b(d)
    {}
 
    fraction operator+(const fraction& t2) const
    {
        fraction tmp;
        tmp.a = a * t2.b + b * t2.a;
        tmp.b = b * t2.b;
        return tmp;
    }
 
    fraction operator-(const fraction& t2)
    {
        fraction tmp;
        tmp.a = a * t2.b - b * t2.a;
        tmp.b = b * t2.b;
        return tmp;
    }
 
    fraction operator*(const fraction& t2)
    {
        fraction tmp;
        tmp.a = a * t2.a;
        tmp.b = b * t2.b;
        return tmp;
    }
 
    fraction operator/(const fraction& t2)
    {
        fraction tmp;
        tmp.a = a * t2.b;
        tmp.b = b * t2.a;
        return tmp;
    }
 
    void lowterms(void)
    {
        __int16 A(a), B(b), C;
        while (B)
        {
            C = A % B;
            A = B;
            B = C;
        }
        a /= abs(A);
        b /= abs(A);
    }
 
    void set()
    {
        cin >> a >> b;
    }
 
    void show() const
    {
        cout << a << '/' << b << endl;
    }
 
    bool operator==(const fraction& t1) const
    {
        return a == t1.a || b == t1.b ? 1 : 0;
    }
 
    bool operator!=(const fraction& t1) const
    {
        return a != t1.a && b != t1.b ? 1 : 0;
    }
    friend ostream& operator<<(ostream& stream, fraction& frac)
    {
        stream << frac.a << '/' << frac.b;
        return stream;
    }
    friend istream& operator>>(istream& stream, fraction& frac)
    {
        char ch;
        stream >> frac.a >> ch >> frac.b;
        return stream;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for (char ch('z'); ch != '0'; ch = getche())
    {
        if (ch != 'z') cout << '\n' << endl;
        fraction t1, t2, t3, zero;
        cout << "Введите выражение:" << endl;
        cin >> t1 >> ch >> t2;
        switch (ch)
        {
        case '+':
            t3 = t1 + t2; t3.lowterms();
            cout << "Результат равен:\n" << t3;
            break;
        case '-':
            t3 = t1 - t2; t3.lowterms();
            cout << "Результат равен:\n" << t3;
            break;
        case '*':
            t3 = t1 * t2; t3.lowterms();
            cout << "Результат равен:\n" << t3;
            break;
        case '/':
            t3 = t1 / t2; t3.lowterms();
            cout << "Результат равен:\n" << t3;
            break;
        default: cout << "Ошибка!" << endl;
        }
        cout << "\nПовторить? (1 - да. 0 - нет.) ";
    }
    cout << '\n' << endl;
    system("pause");
    return 0;
}


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