Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Рекурсивным способом получить все возможные траектории с 0-ой вершины до 6-ой вершины длиной не более 4 вершин https://www.cyberforum.ru/ cpp-beginners/ thread1401823.html
Как написать рекурсивную функцию по задаче: Задается например,такая верхняя треугольная матрица, на самом деле она достаточно большая float A={ { 1, 2, 1,-1,-1,-1}, {-1, 1,-1, 2,-1,-1}, {-1,-1, 2,-1,-1,-1}, {-1,-1,-1, 1, 2,-1}, {-1,-1,-1,-1, 1, 2}, {-1,-1,-1,-1,-1, 2} ...
C++ Файл с разнотипными данными
Подскажите, пожалуйста, есть файл с числовыми данными, хочу написать программу, которая посимвольно читает данные, пропускает то, что не нужно (текст), остальное записывает куда нужно. С последним моментом более или менее понятно, но как грамотно считывание написать не знаю.
C++ Объясните что делает эта программа (do.while) https://www.cyberforum.ru/ cpp-beginners/ thread1401813.html
Объясните пожалуйста что делает эта программа. #include <stdio.h> #include <conio.h> #include <math.h> int main() { int i=1; float a,n; scanf("%f",&n);
C++ Стек в виде массива https://www.cyberforum.ru/ cpp-beginners/ thread1401747.html
Помогите программку составить, выполнение арифметических действий записанных в инфиксной записи, стеков в виде массива.
C++ Аппроксимация. Квадратичная интерполяция
Нужен пример реализации квадратичной интерполяции на интервале с 11 точками. Исходные хi вычисляются по формуле xi=-2+7*(i-1)/10, i=1,11 и у по формуле y=x3-50*cos(x). Используя полученную таблицу (xi, yi), нужно вычислить значения функций f(xi), \varphi(xi, c) и погрешность d(xi)=f(xi)-\varphi(xi, c) в тчк xi=-2+7*(j-1)/20, j=1,21, построить таблицу результатов и проанализировать качество...
C++ Создание таблицы https://www.cyberforum.ru/ cpp-beginners/ thread1401713.html
Добрый день, задача заключается в том, чтобы считать данные и поместить их в таблицу.Задача состоит в том, чтобы создать таблицу. Прошу помочь обозначить в какую сторону копать, где можно почерпнуть инфу, могущую помочь решить данную задачу. Спасибо
C++ Не срабатывает условие while (!file.eof() https://www.cyberforum.ru/ cpp-beginners/ thread1401685.html
Есть функция, которая считает из файла числа в динамический массив: int* ReadFile(string FileName) { ifstream file; file.open(FileName); int* mas=(int*)malloc(sizeof(int)*10); int Count = 10; int i = 0; while (!file.eof()) {
Шаблонный оператор не шаблонного класса C++
Пытаюсь создать альтернативный оператор выделения памяти для своей библиотеки. С целью получить возможность передавать дополнительную информацию о типах в свой диспетчер памяти. Сначала сделал так: template< typename T > T* _new( ) { T* t=_I::_mem_alloc<T>(); return new(t) T( ); }
C++ Задача с файлом https://www.cyberforum.ru/ cpp-beginners/ thread1401653.html
Дан файл определить сколько раз встречается в нем слово вывести на экран номер строк где это слово найдено(программа находит слово не зависимо от регистра) Я написал пррограмму но не знаю как определить номера строк в которых встречаться слово подскажите как это сделать или функцию построчного считывания файла переход на следующую строку #include <iostream> #include <fstream> using namespace...
C++ Конвертирование типов данных https://www.cyberforum.ru/ cpp-beginners/ thread1401649.html
Нужно обработать данные. Пропустить их через кучу функций, каждая из них требует свой тип данных. Вовремя компиляции постоянно сталкиваюсь с тем что компилятор ругается "невозможно преобразовать одно в другое". Из этого я сделал вывод что нужно преобразовывать один тип данных в другой, что бы результат выполнения одной функции можно было поместить в следующую. Так вот мне надоело гуглить и...
Сравнивание двумерного символьного динамического массива со словом C++
Здравствуйте! Пожалуйста, помогите разобраться в этом условии: if (dictionary]==*word) count++; Здесь dictionary - двумерный символьный динамический массив, *word - слово, countchar - это кол-во символов слова, которое записано в эту ячейку. Проблема в том, что если есть два слова 'стол' и 'стул', то count=2, хотя должно быть count=1 и count=1, а dictionary]='стол' и dictionary]='стул'. Я...
C++ Найти слово в файле Помогите написать программу: дан файл, найти в нем слово не зависимо от регистра и вывести на экран сколько раз встречается данное слово, и номер строк на которых оно встречается https://www.cyberforum.ru/ cpp-beginners/ thread1401620.html
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
23.03.2015, 16:30 0

Решение всех задач из учебника Стивена Праты - C++ - Ответ 7378765

23.03.2015, 16:30. Показов 196461. Ответов 271
Метки (Все метки)

Ответ

Глава 8. Упражнение 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
//  sp_Ch8_Pg427_Ex05
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 8, страница 427, упражнение 5.
/*
Напишите шаблонную функцию max5(), которая принимает в качестве
аргумента массив из пяти элементов типа T и возвращает наибольший элемент в
массиве. (Поскольку размер массива фиксирован, его можно жестко закодировать в
цикле, а не передавать в виде аргумента.) Протестируйте функцию в
программе с использованием массива из пяти значений int и массива из пяти значений
double.
*/
#include <iostream>
 
const int ARR_SIZE = 5;
 
template <typename T>
T max5(T * arr)
{
    T maxValue = arr[0];
    for (int i = 1; i < ARR_SIZE; ++i)
        if (arr[i] > maxValue)
            maxValue = arr[i];
    return maxValue;
}
 
 
int main()
{
    int iarr[ARR_SIZE] = {5, 3, 1, 7, 2};
    std::cout << "The maximum value of the array is: " << max5(iarr);
    double darr[ARR_SIZE] = {2.5, 3.4, 0.1, 0.7, 2.9};
    std::cout << "\nThe maximum value of the array is: " << max5(darr);
 
    return 0;
}

Глава 8. Упражнение 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
//  sp_Ch8_Pg428_Ex06
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 8, страница 428, упражнение 6.
/*
Напишите шаблонную функцию maxn(), которая принимает в качестве
аргумента массив элементов типа T и целое число, представляющее количество
элементов в массиве, а возвращает элемент с наибольшим значением. Протестируйте
ее работу в программе, которая использует этот шаблон с массивом из шести
значений int и массивом из четырех значений double. Программа также
должна включать специализацию, которая использует массив указателей на char в
качестве первого аргумента и количество указателей — в качестве второго, а затем
возвращает адрес самой длинной строки. Если имеется более одной строки
наибольшей длины, функция должна вернуть адрес первой из них. Протестируйте
специализацию на массиве из пяти указателей на строки.
*/
#include <iostream>
#include <cstring>  // для strlen()
 
template <typename T>
T maxn(T * arr, int arrSize)
{
    T maxValue = arr[0];
    for (int i = 1; i < arrSize; ++i)
        if (arr[i] > maxValue)
            maxValue = arr[i];
    return maxValue;
}
 
const char * maxn(const char * arr[], int qty)
{
    const char * maxLenghtString = &arr[0][0];
    int maxCharacters = strlen(arr[0]);
    int next = 0;
    for (int i = 1; i < qty; ++i)
    {
        next = strlen(arr[i]);
        if (next > maxCharacters)
        {
            maxCharacters = next;
            maxLenghtString = &arr[i][0];
        }
    }
    return maxLenghtString;
}
 
int main()
{
    int iarr[6] = {5, 3, 7, 9, 1};
    double darr[4] = {2.3, 3.1, 1.6, 7.4};
    const char * carr[5] = { "Rome", "Moscow", "Berlin", "Paris", "London" };
    std::cout << "This is the max value in the int array: " << maxn(iarr, 6);
    std::cout << "\nThis is the max value in the double array: " << maxn(darr, 4);
    std::cout << "\nThis is the max lenght string in the C-strings array: "
    << maxn(carr, 5);
 
    return 0;
}

Глава 8. Упражнение 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
//  sp_Ch8_Pg428_Ex07
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 8, страница 428, упражнение 7.
/*
Измените программу из листинга 8.14 так, чтобы использовать две шаблонных
функции по имени SumArray (), возвращающие сумму содержимого массива
вместо его отображения. Программа должна сообщать общее количество предметов
и сумму всех задолженностей (debts).
*/
// tempover.cpp --- template overloading
#include <iostream>
 
template <typename T>            // template A
int sum_array(T arr[], int n);
 
template <typename T>            // template B
int sum_array(T * arr[], int n);
 
struct debts
{
    char name[50];
    double amount;
};
 
int main()
{
    using namespace std;
    int things[6] = {13, 31, 103, 301, 310, 130};
    struct debts mr_E[3] =
    {
        {"Ima Wolfe", 2400.0},
        {"Ura Foxe", 1300.0},
        {"Iby Stout", 1800.0}
    };
    double * pd[3];
 
// set pointers to the amount members of the structures in mr_E
    for (int i = 0; i < 3; i++)
        pd[i] = &mr_E[i].amount;
 
    cout << "Sum of things: " <<
    sum_array(things, 6);  // uses template A
 
    cout << "\nSum of debts: " <<
    sum_array(pd, 3);      // uses template B (more specialized)
    // cin.get();
    return 0;
}
 
template <typename T>
int sum_array(T arr[], int n)
{
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];
    return sum;
}
 
template <typename T>
int sum_array(T * arr[], int n)
{
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += *arr[i];
    return sum;
}


Глава 9.
Глава 9. Упражнение 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//  sp_Ch9_Pg479_Ex01
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 9, страница 479, упражнение 1.
/*
Имеется следующий заголовочный файл:
// golf.h — для ре9-1.срр
const int Len = 40;
struct golf
{
    char fullname[Len];
    int handicap;
};
// Неинтерактивная версия:
// функция присваивает структуре.типа golf имя игрока и его гандикап (фору),
// используя передаваемые ей аргументы
void setgolf (golf & g, const char * name, int hc);
 
// Интерактивная версия:
// функция предлагает пользователю ввести имя и гандикап,
// присваивает элементам структуры g введенные значения;
// возвращает 1, если введено имя, и 0, если введена пустая строка
int setgolf(golf & g);
 
// Функция устанавливает новое значение гандикапа
void handicap (golf & g, int hc);
 
// Функция отображает содержимое структуры типа golf
void showgolf (const golf & g);
 
Обратите внимание, что функция setgolf() перегружена. Вызов первой
версии функции имеет следующий вид:
golf ann;
setgolf(ann, "Ann Birdfree", 24);
Функция предоставляет информацию, которая содержится в структуре ann.
Вызов второй версии функции имеет следующий вид:
golf andy;
setgolf(andy);
Функция предлагает пользователю ввести имя и гандикап, а затем сохраняет эти
данные в структуре andy. Эта функция могла бы (но не обязательно) внутренне
использовать первую версию.
Постройте многофайловую программу на основе этого заголовочного файла.
Один файл по имени golf.cpp должен содержать определения функций,
которые соответствуют прототипам заголовочного файла. Второй файл должен
содержать функцию main() и обеспечивать реализацию всех средств прототипи-
рованных функций. Например, цикл должен запрашивать ввод массива структур
типа golf и прекращать ввод после заполнения массива, либо когда вместо
имени игрока в гольф пользователь вводит пустую строку. Чтобы получить доступ к
структурам типа golf, функция main() должна использовать только прототипи-
рованные функции.
*/
#include <cstring>
#include "golf.h"
 
int main()
{
    const int ARR_SIZE = 4;
 
    golf ann;
    setgolf(ann, "Ann Birdfree", 24);
    showgolf(ann);
 
    golf player[ARR_SIZE];
    int k = 0;
    for ( ; k < ARR_SIZE; ++k)
        if (setgolf(player[k]) == 0)
            break;
 
    for ( int i = 0; i < k; ++i)
        showgolf(player[i]);
 
    return 0;
}
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
#include <iostream>
#include "golf.h"
#include <cstring>
void setgolf(golf & g, const char * name, int hc)
{
    strcpy (g.fullname, name);
    g.handicap = hc;
}
 
int setgolf(golf & g)
{
    int nameHasBeenEntered = 0;
    std::cout << "\nPlease enter the name: ";
    std::cin.sync();
    std::cin.get(g.fullname, Len);
    if (strlen(g.fullname) > 0)
    {
        nameHasBeenEntered = 1;
        std::cout << "Please enter the handicap: ";
        std::cin >> g.handicap;
    }
 
    return nameHasBeenEntered;
}
 
void handicap(golf & g, int hc)
{
    g.handicap = hc;
}
 
void showgolf(const golf & g)
{
    std::cout << std::endl << g.fullname << std::endl << g.handicap << std::endl;
}

Глава 9. Упражнение 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
47
48
49
//  sp_Ch9_Pg480_Ex02
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 9, страница 480, упражнение 2.
/*
Модифицируйте код в листинге 9.9, заменив символьный массив объектом
string. Программа больше не должна проверять, умещается ли вводимая
строка, и для проверки ввода пустой строки может сравнивать вводимую строку со
значением "".
*/
// static.cpp -- using a static local variable
#include <iostream>
#include <string>
 
using std::cout;
using std::cin;
using std::string;
 
void strcount(string);
 
int main()
{
    string input;
    cout << "Enter a line: ";
    getline(cin, input);
    do
    {
        strcount(input);
        cout << "Enter next line (empty line to quit):\n";
        cin.sync();
        getline(cin, input);
    }
    while (input != "");
    cout << "Bye\n";
 
    return 0;
}
 
void strcount(string str)
{
    static int total = 0;        // static local variable
    int count = 0;               // automatic local variable
 
    cout << """ << str <<"" contains ";
    for (size_t i = 0; i < str.size(); ++i)              // go to end of string
        ++count;
    total += count;
    cout << count << " characters\n";
    cout << total << " characters total\n";
}

Глава 9. Упражнение 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
//  sp_Ch9_Pg480_Ex03
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 9, страница 480, упражнение 3.
/*
Начните со следующего объявления структуры:
struct chaff
{
    char dross[20];
    int slag;
);
Напишите программу, которая использует операцию new с размещением, чтобы
поместить массив из двух таких структур в буфер. Затем программа присваивает
значения членам структуры (не забудьте воспользоваться функцией strcpy()
для массива char) и отображает ее содержимое с помощью цикла. Вариант 1
предусматривает применение в качестве буфера памяти статического массива,
как было показано в листинге 9.10. Вариант 2 состоит в использовании обычной
операции new для выделения памяти под буфер.
*/
#include <iostream>
#include <cstring>
#include <new>
const int Len = 20;
 
struct chaff
{
    char dross[Len];
    int slag;
};
 
void setchaff(chaff & g, const char * d, int s)
{
    strcpy (g.dross, d);
    g.slag = s;
}
 
void showchaff(const chaff & g)
{
    std::cout << std::endl << g.dross << std::endl << g.slag << std::endl;
}
 
int main()
{
    const int BUF_SIZE = 50;
    const int ARR_SIZE = 2;
    char buffer[BUF_SIZE];
    chaff * garbage;
    garbage = new(buffer) chaff[ARR_SIZE];
 
    char name[Len];
    int qty = 0;
 
    for (int i = 0; i < ARR_SIZE; ++i)
    {
        std::cout << "\nPlease enter the name: ";
        std::cin.sync();
        std::cin.get(name, Len);
        std::cout << "Please enter the quantity: ";
        std::cin >> qty;
        setchaff(garbage[i], name, qty);
    }
 
    for (int i = 0; i < ARR_SIZE; ++i)
    {
        showchaff(garbage[i]);
    }
 
    return 0;
}


Вернуться к обсуждению:
Решение всех задач из учебника Стивена Праты C++
4
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2015, 16:30
Готовые ответы и решения:

Нюансы синтаксиса: классы, список инициализации (неясная строка из учебника Стивена Праты)
Вот сам класс #ifndef TABTENN0_H_ #define TABTENN0_H_ #include &lt;string&gt; using std ::...

читаю главу 10 книги стивена праты - "объекты и классы". автор во всех примерах поступает следуйщим образм: объявляет класс в одном фаиле...
...а реализует функции в другом - в том котором создаёт и ползуется объектом. у меня вопросс: а не...

Неожиданный консольный вывод (упражнения 3 к главе 6 книги Стивена Праты)
:-| Вообщем имеется код (решение 3 упражнения к главе 6 книги Прата): #include &lt;iostream&gt;...

Найти причины и способы исправления ошибок в коде (упражнения по книге Стивена Праты)
В общем так . Пробую учить плюсы по книжке Прата . Пробую недавно , и потому полный нуб. От того и...

Задача из лекций по книге Стивена Праты
Глава 6 задача 5 Напишите программу, которая предлагает пользователю ввести прописную букву....

271
23.03.2015, 16:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2015, 16:30
Помогаю со студенческими работами здесь

Решение задач из учебника Томшина
Я являюсь студентом 1-го курса, и нам дали задачи по c# которые необходимо решить. Задачи взяты из...

Понятен материал учебника, но не получается самостоятельное решение задач
Здравствуйте. Читаю книжку Дейтелов, переписываю код, который дан в учебнике, потом читаю...

Запишите в файл 2 название команды, количество решенных задач и общее времени, потраченное на решение всех задач
Подскажите как доделать задачу. В файле 1 хранятся данные о названиях команды, номере решенной...

Объясните решение задачи из учебника
Книга &quot;Курс теории вероятностей&quot; Б.В. Гнеденко, серия &quot;Классический университетский учебник&quot;, 2005...

Решение одной из задач по выбору пользователя с возможностью загрузки задач из подключаемой библиотеки
Создайте программу решения одной из трех задач по выбору пользователя. Предусмотрите возможность...

Решение задач на С++ (написание программы для решения задач)
Добрый день! Помогите с написанием кода для программы, которая будет решать следующие задачки: 1)...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru