Форум программистов, компьютерный форум 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
Заблокирован
414 / 288 / 63
Регистрация: 27.01.2015
Сообщений: 1,923
Записей в блоге: 1
Завершенные тесты: 1
25.02.2015, 20:04     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Глава 10


Номер 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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Сколько чисел вы хотите ввести?" << endl;
    unsigned __int16* n = new unsigned __int16;
    cin >> *n;
    float* arr = new float[*n];
    for (int i(0); i < *n;)
    {
        cout << "Введите " << i + 1 << " число:" << endl;
        cin >> *(arr + i++);
    }
    float* sum = new float; *sum = 0;
    for (int i(0); i < *n;)
        *sum += *(arr + i++);
    cout << "Среднее арифмитическое массива равно:\n" << *sum / *n << endl;
    delete[] arr;
    delete n;
    delete sum;
    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
43
44
45
46
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <ctype.h>
#include <cstring>
using namespace std;
 
class String
{
private:
    char* str;
public:
    String(char* s)
    {
        int length = strlen(s);
        str = new char[length + 1];
        strcpy(str, s);
    }
    ~String()
    {
        cout << "Удаляем строку\n";
        delete[] str;
    }
    void display() const
    {
        cout << str << endl;
    }
    void upit()
    {
        __int16 i(0);
        for (; i < strlen(str);)
            *(str + i++) = toupper(*(str + i));
        str[i] = 0;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    String st("Hello, World!");
    st.upit();
    st.display();
    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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
class days
{
protected:
    string name;
public:
    void setName()
    {
        cout << "Введите день недели: "; cin >> name;
    }
    void printName()
    {
        cout << endl << name;
    }
    string getName()
    {
        return name;
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    void bsort(days**, int);
    days* persPtr[7];
    int n = 0;
    char choice;
    do
    {
        persPtr[n] = new days;
        persPtr[n]->setName();
        n++;
        cout << "Продолжаем ввод (y/n)?";
        cin >> choice;
    }
    while (choice == 'y');
    cout << "\nНеотсортированный список:";
    for (int j = 0; j < n; j++)
        persPtr[j]->printName();
    bsort(persPtr, n);
    cout << "\nОтсортированный список:";
    for (int j = 0; j < n; j++)
        persPtr[j]->printName();
    cout << endl;
    system("pause");
    return 0;
}
 
void bsort(days** pp, int n)
{
    void order(days**, days**);
    int j, k;
    for (j = 0; j < n - 1; j++)
    for (k = j + 1; k < n; k++)
        order(pp + j, pp + k);
}
 
void order(days** pp1, days** pp2)
{
    if ((*pp1)->getName() >(*pp2)->getName())
    {
        days* tempptr = *pp1;
        *pp1 = *pp2;
        *pp2 = tempptr;
    }
}


Номер 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
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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
struct link
{
    int data;
    link* next;
};
 
class linklist
{
private:
    link* first;
public:
    linklist()
    {
        first = NULL;
    }
    ~linklist();
    void additem(int d);
    void display();
};
 
void linklist::additem(int d)
{
    link* newlink = new link;
    newlink->data = d;
    newlink->next = first;
    first = newlink;
}
 
linklist::~linklist()
{
    while (first)
    {
        cout << "Удаление объекта..." << endl;
        link* temp(first->next);
        delete first;
        first = temp;
    }
    cout << endl;
    system("pause");
}
 
void linklist::display()
{
    link* current = first;
    while (current)
    {
        cout << current->data << endl;
        current = current->next;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    linklist li;
    li.additem(25);
    li.additem(36);
    li.additem(49);
    li.additem(64);
    li.additem(77);
    li.display();
    cout << endl;
    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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
const __int32 MAX(20);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    void addarrays(const float[], const float[], float[]);
    float arr1[MAX], arr2[MAX], arr3[MAX];
    srand(time(0));
    for (int i(0); i < MAX;)
    {
        *(arr1 + i) = rand() % 20;
        *(arr2 + i++) = rand() % 50;
    }
    addarrays(arr1, arr2, arr3);
    for (int i(0); i < MAX;)
        cout << arr3[i++] << endl;
    cout << endl;
    system("pause");
    return 0;
}
 
void addarrays(const float mas1[], const float mas2[], float mas3[])
{
    cout << "Содержимое массива №3:\n" << endl;
    for (int i(0); i < MAX;)
        *(mas3 + i++) = *(mas1 + i) + *(mas2 + i);
}


Номер 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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
__int16 compch(const char& ch1, const char& ch2)
{
    if (ch1 == ch2)
        return 0;
    else if (ch1 < ch2)
        return -1;
    else if (ch1 > ch2)
        return 1;
}
 
__int16 compstr(const char* str1, const char* str2)
{
    if (strlen(str1) < strlen(str2))
    {
        for (__int16 i(0); i < strlen(str1); i++)
        {
            switch (*str1++, *str2++)
            {
            case -1: return -1; break;
            case 1: return 1; break;
            }
        }
        return -1;
    }
    else if (strlen(str1) > strlen(str2))
    {
        for (__int16 i(0); i < strlen(str2); i++)
        {
            switch (compch(*str1++, *str2++))
            {
            case -1: return -1; break;
            case 1: return 1; break;
            }
        }
        return 1;
    }
    else if (strlen(str1) == strlen(str2))
    {
        for (__int16 i(0); i < strlen(str1); i++)
        {
            switch (compch(*str1++, *str2++))
            {
            case -1: return -1; break;
            case 1: return 1; break;
            }
        }
        return 0;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char* str1("Привет!");
    char* str2("Привет всем!");
    switch (compstr(str1, str2))
    {
    case -1:
        cout << "1-ая строка идет первой по алфавиту." << endl;
        break;
    case 0:
        cout << "Строки эквивалентны." << endl;
        break;
    case 1:
        cout << "2-ая строка идет первой по алфавиту." << endl;
        break;
    }
    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
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <string>
using namespace std;
 
class person
{
protected:
    float salary;
    string name;
public:
    void setName()
    {
        cout << "Введите имя: "; cin >> name;
        cout << "Введите оклад: "; cin >> salary;
    }
    void printName() const
    {
        cout << '\n' << name << ' ' << salary;
    }
    string getName() const
    {
        return name;
    }
    float getSalary() const
    {
        return salary;
    }
};
 
void salsort(person** mas, const __int16& n)
{
    for (__int16 i(0); i < n - 1; i++)
    {
        for (__int16 j(0); j < n - 1 - i; j++)
        {
            if ((*(mas + j))->getSalary() > (*(mas + j + 1))->getSalary())
            {
                person* temp(mas[j]);
                mas[j] = mas[j + 1];
                mas[j + 1] = temp;
            }
        }
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    person* perarr[20];
    __int16 n(0); char ch;
    do
    {
        *(perarr + n) = new person;
        perarr[n++]->setName();
        cout << "Повторить? (1 - да, 0 - нет.) ";
        cin >> ch;
    } while (ch != '0');
    cout << "\nНеотсортированный список:";
    for (int i(0); i < n; i++)
        perarr[i]->printName();
    salsort(perarr, n);
    cout << "\n\nОтсортированный список:";
    for (int i(0); i < n; i++)
        perarr[i]->printName();
    cout << '\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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
struct link
{
    int data;
    link* next;
};
 
class linklist
{
private:
    link* first;
public:
    linklist()
    {
        first = NULL;
    }
    void additem(int d);
    void display();
};
 
void linklist::additem(int d)
{
    if (!first)
    {
        first = new link;
        first->data = d;
        first->next = 0;
    }
    else
    {
        link *temp1(first), *temp2;
        while (temp1->next) temp1 = temp1->next;
        temp2 = new link;
        temp2->data = d;
        temp2->next = 0;
        temp1->next = temp2;
    }
}
 
void linklist::display()
{
    link* current = first;
    while (current)
    {
        cout << current->data << endl;
        current = current->next;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    linklist li;
    li.additem(25);
    li.additem(36);
    li.additem(49);
    li.additem(64);
    li.display();
    system("pause");
    return 0;
}


Номер 9 и 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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(0));
    cout << "Введите размерность матрицы:" << endl;
    unsigned __int16 n, m; cin >> n >> m;
    int** arr = new int *[n];
    for (int i(0); i < n; i++)
        *(arr + i) = new int[m];
    for (int i(0); i < n; i++)
    for (int j(0); j < m; j++)
        *(*(arr + i) + j) = rand() % 30;
    cout << endl;
    for (int i(0); i < n; i++)
    {
        for (int j(0); j < m; j++)
            cout << setw(3) << *(*(arr + i) + j);
        cout << endl;
    }
    cout << "\nВведите индекс элемента матрицы:" << endl;
    cin >> n >> m;
    cout << "Элемент матрицы на позиции " << n << ' ' << m 
         << " равен:" << endl;
    cout << arr[--n][--m];
    delete[] *arr;
    delete[] arr;
    cout << '\n' << endl;
    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
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
unsigned const __int16 MAX(9);
 
class array
{
    __int32** mas;
    static __int16 n;
public:
    array()
    {
        mas = new int*[MAX];
    }
    void add(__int32* temp)
    {
        if (n < MAX) *(mas + n++) = temp;
    }
    __int32& operator[](const __int16&) const;
    void show(void) const
    {
        cout << setw(7) << 1;
        for (__int16 i(1); i < MAX;)
        {
            cout << setw(4) << ++i;
        }
        cout << endl;
        for (__int16 i(0); i < 39; i++)
            cout << "-";
        cout << endl;
        for (__int16 i(0), c(i); i < MAX; i++, c += 10)
        {
            cout << setw(2) << c << '|';
            for (__int16 j(0); j < MAX;)
            {
                cout << setw(4) << *(*(mas + i) + j++);
            }
            cout << endl;
        }
    }
};
 
__int16 array::n(0);
 
__int32& array::operator[](const __int16& a) const
{
    return a % 10 ? *(*(mas + a / 10) + a % 10 - 1) : *(*(mas + a / 10));
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(0));
    array a1;
    for (__int16 i(0); i < MAX; i++)
    {
        __int32* arr = new int[MAX];
        for (__int16 j(0); j < MAX;)
            *(arr + j++) = rand() % 30;
        a1.add(arr);
    }
    cout << "Исходная случайная матрица:\n" << endl;
    a1.show();
    cout << "\nВведите индекс одномерного массива для отображения: ";
    __int16 n; cin >> n;
    cout << a1[n] << '\n' << 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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
 
const short MAX(50);
float fmemory[MAX];
short pmemory[MAX], fmem_top(0), pmem_top(0);
 
class Float
{
    short addr;
public:
    Float(float a)
    {
        fmemory[fmem_top] = a;
        addr = fmem_top++;
    }
    short operator&()
    {
        return addr;
    }
};
 
class ptrFloat
{
    short addr;
public:
    ptrFloat(short a)
    {
        pmemory[pmem_top] = a;
        addr = pmem_top++;
    }
    float& operator*()
    {
        return fmemory[pmemory[addr]];
    }
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Float var1 = 1.234;
    Float var2 = 5.678;
    ptrFloat ptr1 = &var1;
    ptrFloat ptr2 = &var2;
    cout << " *ptr1 = " << *ptr1 << endl;
    cout << " *ptr2 = " << *ptr2 << endl;
    *ptr1 = 7.123;
    *ptr2 = 8.456;
    cout << " *ptr1 = " << *ptr1 << endl;
    cout << " *ptr2 = " << *ptr2 << endl;
    system("pause");
    return 0;
}


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