Форум программистов, компьютерный форум 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
=^_^=
552 / 439 / 93
Регистрация: 27.01.2015
Сообщений: 2,553
Записей в блоге: 1
Завершенные тесты: 1
07.02.2015, 23:41     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Глава 7


Номер 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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <cstring>
using namespace std;
 
void reversit(char str[])
{
    for (int i(0); i < strlen(str) / 2; i++)
    {
        char tmp(str[i]);
        str[i] = str[strlen(str) - 1 - i];
        str[strlen(str) - 1 - i] = tmp;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char str[80];
    cout << "Введите строку:" << endl;
    cin.get(str, 80);
    reversit(str);
    cout << str << 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
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <string>
using namespace std;
 
class employee
{
    unsigned __int32 number;
    string name;
public:
    void getdata(void)
    {
        cout << "Введите номер и имя служащего:" << endl;
        cin >> number >> name;
    }
    void putdata(void)
    {
        cout << number << ' ' << name << endl;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const unsigned __int32 MAX(3);
    employee arr[MAX];
    for (int i(0); i < MAX; i++)
    {
        arr[i].getdata();
    }
    cout << endl;
    for (int i(0); i < MAX; i++)
    {
        arr[i].putdata();
    }
    cout << endl;
    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
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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <string>
using namespace std;
 
class Distance
{
    __int32 feet;
    float inches;
public:
    Distance() : feet(0), inches(0)
    {}
    void set(void)
    {
        cout << "Введите футы и дюймы:" << endl;
        cin >> feet >> inches;
    }
    void show(void) const
    {
        cout << feet << '.' << inches << endl;
    }
    void add(const Distance& tmp)
    {
        inches += tmp.feet * 12 + tmp.inches;
    }
    void div_dist(const int& divisor)
    {
        inches /= divisor;
        feet = inches / 12;
        inches -= feet * 12;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int MAX(3);
    Distance arr[MAX], tmp;
    for (int i(0); i < MAX; i++)
    {
        arr[i].set();
    }
    for (int i(0); i < MAX; i++)
    {
        tmp.add(arr[i]);
    }
    tmp.div_dist(MAX);
    cout << "Среднее значение равно: "; tmp.show(); cout << 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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
using namespace std;
 
__int32 maxint(const __int32 [], const __int32&);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int MAX(5);
    __int32 arr[MAX];
    cout << "Введите числа-элементы массива:" << endl;
    for (int i(0); i < MAX; i++)
    {
        cout << i + 1 << " число: ";
        cin >> arr[i];
    }
    cout << "\nНаибольший элемент расположен в " << maxint(arr, MAX)
         << " ячейке массива.\nЕго значение равно: "
         << arr[maxint(arr, MAX)] << '\n' << endl;
    system("pause");
    return 0;
}
 
__int32 maxint(const __int32 arr[], const __int32& num)
{
    __int32 tmp;
    for (int i(0), mx(i); i < num; i++)
    {
        if (arr[i] > mx)
        {
            mx = arr[i];
            tmp = i;
        }
    }
    return tmp;
}


Номер 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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
using namespace std;
 
class fraction
{
    __int32 a, b;
public:
    fraction() : a(0), b(1)
    {}
    void set()
    {cin >> a >> b;}
    void add(const fraction& tmp)
    {
        a = a * tmp.b + b * tmp.a;
        b = b * tmp.b;
    }
    void end(const __int32& count)
    {
        b *= count;
        __int32 A(a), B(b), C;
        while (B)
        {
            C = A % B;
            A = B;
            B = C;
        }
        a /= abs(A);
        b /= abs(A);
    }
    void show() const
    {
        cout << a << '/' << b << endl;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int MAX(2);
    fraction arr[MAX], tmp;
    cout << "Введите дроби:" << endl;
    for (int i(0); i < MAX; i++)
    {
        arr[i].set();
        tmp.add(arr[i]);
    }
    cout << "\nСреднее значение массива дробей равно:" << endl;
    tmp.end(MAX); tmp.show(); cout << endl;
    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
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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
 
enum Suit { clubs, diamonds, hearts, spades };
const int jack = 11;
const int queen = 12;
const int king = 13;
const int ace = 14;
 
class card
{
private:
    int number;
    Suit suit;
public:
    card()
    { }
    void set(int n, Suit s)
    {
        suit = s; number = n;
    }
    void display();
};
 
void card::display()
{
    if (number >= 2 && number <= 10)
        cout << number;
    else
    {
        switch (number)
        {
        case jack: cout << 'J'; break;
        case queen: cout << 'Q'; break;
        case king: cout << 'K'; break;
        case ace: cout << 'A'; break;
        }
    }
    switch (suit)
    {
    case clubs: cout << static_cast<char>(5); break;
    case diamonds: cout << static_cast<char>(4); break;
    case hearts: cout << static_cast<char>(3); break;
    case spades: cout << static_cast<char>(6); break;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    card deck[52];
    int j;
    for (j = 0; j < 52; j++)
    {
        int num = (j % 13) + 2;
        Suit su = Suit(j / 13);
        deck[j].set(num, su);
    }
    srand(time(0));
    for (j = 0; j < 52; j++)
    {
        int k = rand() % 52;
        card temp = deck[j];
        deck[j] = deck[k];
        deck[k] = temp;
    }
    for (j = 0; j < 52; j++)
    {
        switch (j)
        {
        case 0: cout << "1-ый игрок:\n"; break;
        case 13: cout << "\n2-ой игрок:\n"; break;
        case 26: cout << "\n3-ий игрок:\n"; break;
        case 39: cout << "\n4-ый игрок:\n"; break;
        }
        deck[j].display();
        cout << " ";
        if (!((j + 1) % 13))
            cout << endl;
    }
    cout << endl;
    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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <string>
#include <cstring>
using namespace std;
 
const __int16 MAX(80);
 
class money
{
    char arr[MAX];
public:
    money()
    {
        arr[0] = 0;
    }
    void show() const
    {
        cout << arr << endl;
    }
    long double mstold(char temp[])
    {
        for (unsigned int i(0), j(0); i < strlen(temp); i++)
        {
            switch (temp[i])
            {
            case '0':
                arr[j] = temp[i]; j++;
                break;
            case '1':
                arr[j] = temp[i]; j++;
                break;
            case '2':
                arr[j] = temp[i]; j++;
                break;
            case '3':
                arr[j] = temp[i]; j++;
                break;
            case '4':
                arr[j] = temp[i]; j++;
                break;
            case '5':
                arr[j] = temp[i]; j++;
                break;
            case '6':
                arr[j] = temp[i]; j++;
                break;
            case '7':
                arr[j] = temp[i]; j++;
                break;
            case '8':
                arr[j] = temp[i]; j++;
                break;
            case '9':
                arr[j] = temp[i]; j++;
                break;
            case '.':
                arr[j] = temp[i]; j++;
                break;
            }
            if (!(strlen(temp) - i - 1))
                arr[j] = 0;
        }
        return stold(arr);
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    money tmp; char ch[MAX];
    cout << "Введите денежную строку:" << endl;
    cin.get(ch, MAX);
    cout << "\nДенежная строка в формате long double:\n"
         << fixed << setprecision(3) << tmp.mstold(ch) << '\n' << endl;
    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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
using namespace std;
 
class safearay
{
    static const long MAX = 80;
    long limit[MAX];
public:
    void putel(const long& tmp2, const long& tmp1)
    {
        if (tmp1 < 0 || tmp1 >= MAX)
            cout << "Неверный индекс массива." << endl;
        else
            limit[tmp1] = tmp2;
    }
    long getel(const long& tmp1)
    {
        if (tmp1 < 0 || tmp1 >= MAX)
        {
            cout << "\nНеверный индекс массива." << endl;
            return 0;
        }
        else
            return limit[tmp1];
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    safearay t1;
    for (long i(1), j, k; i < 2; i++)
    {
        cout << "Введите элемент и его индекс:" << endl;
        cin >> j >> k;
        t1.putel(j, k);
    }
    for (long i(1), j; i < 2; i++)
    {
        cout << "\nВведите индекс элемента:" << endl;
        cin >> j;
        cout << t1.getel(j) << '\n' << 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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
using namespace std;
 
class queue
{
    enum { MAX = 10 };
    int st[MAX];
    int head, tail;
public:
    queue() : head(0), tail(0)
    {}
    void put(int var)
    {
        if (tail == MAX)
            cout << "\nОчередь переполнена." << endl;
        else
        {
            st[tail++] = var;
        }
    }
    void get()
    {
        if (!tail)
            cout << "Очередь пуста." << endl;
        else
        {
            cout << st[head] << endl;
            for (int i(0); i <= tail; i++)
                st[i] = st[i + 1];
            tail--;
        }
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    queue s1;
    s1.put(11);
    s1.put(22);
    cout << "1: "; s1.get();
    cout << "2: "; s1.get();
    s1.put(33);
    s1.put(44);
    s1.put(55);
    s1.put(66);
    cout << "3: "; s1.get();
    cout << "4: "; s1.get();
    cout << "5: "; s1.get();
    cout << "6: "; s1.get();
    system("pause");
    return 0;
}


Номер 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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <process.h>
using namespace std;
 
class matrix
{
    static const long MAX = 80;
    long limit[MAX][MAX];
    __int16 i, j;
public:
    matrix() : i(MAX), j(MAX)
    {}
    matrix(int n, int k) : i(n), j(k)
    {}
    void putel(const long& tmp1, const long& tmp2, const long& tmp3)
    {
        if (tmp1 < 0 || tmp1 >= i || tmp2 < 0 || tmp2 >= j)
        {
            cout << "Неверный индекс массива.\n" << endl;
            system("pause");
            exit(0);
        }
        else
            limit[tmp1][tmp2] = tmp3;
    }
    void getel(const long& tmp1, const long& tmp2)
    {
        if (tmp1 < 0 || tmp1 >= i || tmp2 < 0 || tmp2 >= j)
            cout << "\nНеверный индекс массива." << endl;
        else
            cout << '\n' << limit[tmp1][tmp2] << '\n' << endl;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Введите желаемую размерность матрицы:" << endl;
    __int16 k, l, m; cin >> k >> l;
    matrix m1(k, l);
    cout << "Введите координаты ячейки в матрице и ее значение:" << endl;
    cin >> k >> l >> m; m1.putel(k, l, m);
    cout << "Введите координаты ячейки для вывода ее содержимого:" << endl;
    cin >> k >> l; m1.getel(k, l);
    system("pause");
    return 0;
}


Номер 11

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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <sstream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
 
class money
{
    static const __int16 MAX = 80;
    char arr[MAX];
public:
    money()
    {arr[0] = 0;}
    void ldtoms(long double& tmp)
    {
        stringstream ss;
        ss << fixed << setprecision(3) << tmp;
        ss >> arr;
        char tmp1[MAX], tmp2[MAX]; int count(0);
        for (int i(0); arr[i] != 0; i++)
        {
            if (arr[i] != '.') count = i; else break;
        }
        for (int i(0); i <= count; i++)
        {
            tmp1[i] = arr[i];
            if (!(count - i)) tmp1[i + 1] = 0;
        }
        for (int i(count + 1), j(0); arr[i] != 0; i++, j++)
        {
            tmp2[j] = arr[i];
            if (!(strlen(arr) - 1 - i)) tmp2[j + 1] = 0;
        }
        string tmp3(tmp1), tmp4(tmp2);
        reverse(tmp3.begin(), tmp3.end());
        for (int i(0); i <= count; i++)
            if (!((i + 1) % 4)) tmp3.insert(i, " ");
        reverse(tmp3.begin(), tmp3.end());
        tmp3.insert(0, "$ ");
        cout << "\nЭквивалентное число в строковом формате:\n" << tmp3 + tmp4 << endl;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    money t1;
    long double tmp;
    cout << "Введите число:" << endl;
    cin >> tmp; t1.ldtoms(tmp);
    cout << endl;
    system("pause");
    return 0;
}


Номер 12

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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <sstream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
 
class bMoney
{
    static const __int16 MAX = 80;
    char arr[MAX];
    long double money;
public:
    bMoney() : money(0)
    {
        arr[0] = 0;
    }
    void ldtoms(long double& tmp)
    {
        stringstream ss;
        ss << fixed << setprecision(3) << tmp;
        ss >> arr;
        char tmp1[MAX], tmp2[MAX]; int count(0);
        for (int i(0); arr[i] != 0; i++)
        {
            if (arr[i] != '.') count = i; else break;
        }
        for (int i(0); i <= count; i++)
        {
            tmp1[i] = arr[i];
            if (!(count - i)) tmp1[i + 1] = 0;
        }
        for (int i(count + 1), j(0); arr[i] != 0; i++, j++)
        {
            tmp2[j] = arr[i];
            if (!(strlen(arr) - 1 - i)) tmp2[j + 1] = 0;
        }
        string tmp3(tmp1), tmp4(tmp2);
        reverse(tmp3.begin(), tmp3.end());
        for (int i(0); i <= count; i++)
        if (!((i + 1) % 4)) tmp3.insert(i, " ");
        reverse(tmp3.begin(), tmp3.end());
        tmp3.insert(0, "$ ");
        cout << "\nДенежная сумма в строковом формате:\n" << tmp3 + tmp4 << '\n' << endl;
    }
    void mstold(char temp[])
    {
        for (unsigned int i(0), j(0); i < strlen(temp); i++)
        {
            switch (temp[i])
            {
            case '0':
                arr[j] = temp[i]; j++;
                break;
            case '1':
                arr[j] = temp[i]; j++;
                break;
            case '2':
                arr[j] = temp[i]; j++;
                break;
            case '3':
                arr[j] = temp[i]; j++;
                break;
            case '4':
                arr[j] = temp[i]; j++;
                break;
            case '5':
                arr[j] = temp[i]; j++;
                break;
            case '6':
                arr[j] = temp[i]; j++;
                break;
            case '7':
                arr[j] = temp[i]; j++;
                break;
            case '8':
                arr[j] = temp[i]; j++;
                break;
            case '9':
                arr[j] = temp[i]; j++;
                break;
            case '.':
                arr[j] = temp[i]; j++;
                break;
            }
            if (!(strlen(temp) - i - 1))
                arr[j] = 0;
        }
        cin.clear();
        cin.sync();
        money = stold(arr);
    }
    void madd(const bMoney& tmp) const
    {
        bMoney temp1;
        long double temp2(money + tmp.money);
        temp1.ldtoms(temp2);
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for (char ch('z'); ch != '0'; ch = getche())
    {
        const __int16 MAX(80);
        bMoney t1, t2;
        char tmp1[MAX], tmp2[MAX];
        if (ch != 'z') cout << '\n' << endl;
        cout << "Введите 1-ую денежную строку:" << endl;
        cin.get(tmp1, MAX);
        t1.mstold(tmp1);
        cout << "\nВведите 2-ую денежную строку:" << endl;
        cin.get(tmp2, MAX);
        t2.mstold(tmp2);
        t1.madd(t2);
        cout << "Повторить? (1 - да. 0 - нет.) ";
    }
    cout << '\n' << endl;
    system("pause");
    return 0;
}


 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru