Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/389: Рейтинг темы: голосов - 389, средняя оценка - 4.90
ZarinZomanu4
8 / 8 / 0
Регистрация: 27.05.2013
Сообщений: 93
1

Решение всех задач из учебника Стивена Прата

23.03.2015, 12:20. Просмотров 76290. Ответов 211
Метки нет (Все метки)

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

Глава 4

Задания




Задача №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
#include <iostream>
 
int main ()
{ 
    using namespace std;
    const int ArSize = 20;
    char Fname[ArSize];
    char Lname[ArSize];
    int age;
    char bit;
    //enum gradeW {A,B,C};
    cout<<"what is your first name "<<endl;
    cin.getline(Fname,ArSize);
    cout<<"what is your last name "<<endl;
    cin.getline(Lname,ArSize);
    cout<<"what letter grade do you deserve(A,B,C) "<<endl;
    cin>>bit;
    cout<<"what is your age "<<endl;
    cin>> age ;
    cin.get();
    cout<<"Name: "<<Lname<<" "<<Fname<<endl;
    cout<<"Age: "<<age<<endl;
    switch (bit)
        {case 'A':
            cout<<"Grade B "<<endl;
            break;
        case 'B':
            cout<<"Grade C"<<endl;
            break;
        case 'C':
            cout<<"Grade D"<<endl;
            break;
        default: cout<<"wrong"<<endl;}
    cin.get();
    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
#include <iostream>
#include <string>
int main ()
{ 
    using namespace std;
    string Fname;
    string Lname;
    int age;
    char bit;
    cout<<"what is your first name "<<endl;
    getline(cin,Fname);
    cout<<"what is your last name "<<endl;
    getline(cin,Lname);
    cout<<"what letter grade do you deserve(A,B,C) "<<endl;
    cin>>bit;
    cout<<"what is your age "<<endl;
    cin>> age ;
    cin.get();
    cout<<"Name: "<<Lname<<" "<<Fname<<endl;
    cout<<"Age: "<<age<<endl;
    switch (bit)
        {case 'A':
            cout<<"Grade B "<<endl;
            break;
        case 'B':
            cout<<"Grade C"<<endl;
            break;
        case 'C':
            cout<<"Grade D"<<endl;
            break;
        default: cout<<"dsfsfsfsfsd"<<endl;}
    cin.get();
    return 0;
  }

Задача №3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
//#include <string>
int main ()
{ 
    using namespace std;
    const int ArSize = 20;
    char Fname[ArSize];
    char Lname[ArSize];
    cout<<"Enter your first name "<<endl;
    cin.getline(Fname,ArSize);
    cout<<"Enter your last name "<<endl;
    cin.getline(Lname,ArSize);
    cout<<"Name: "<<Lname<<",  "<<Fname<<endl;
    cin.get();
    return 0;
  }

Задача №5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
struct CandyBar
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{ 
    using namespace std;
    CandyBar snack={"Mocha Much",2.3,350};
    cout<<"Struct )))) "<<snack.Name<<snack.netto<<"     "<<snack.Ccal<<endl;
    cin.get();
    return 0;
  }

Задача №6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
struct CandyBar
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{ 
    using namespace std;
    CandyBar snack[3]={
        {"Mocha Much",2.3,350},
        {"sfdsfsdf",2.45,435},
        {"bnderlogi", 2.12 , 777}};
 
    cout<<"Struct  "<<snack[2].Name<<"    "<<snack[2].netto<<"   "<<snack[0].Ccal<<endl;
    cin.get();
    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
#include <iostream>
struct Pizza
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{   using namespace std;
    Pizza Peper;
    cout<<"Enter Name:"<<endl;
    cin.getline (Peper.Name,20);
    cout<<"Enter diametr:"<<endl;
    cin>>Peper.netto;
    cout<<"Enter ves:"<<endl;
    cin>>Peper.Ccal;
    cout<<"Pizza: "<<Peper.Name<<endl<<"Diametr: "<<Peper.netto<<endl<<"Ves: "<<Peper.Ccal<<endl;
    cin.get();
    cin.get();
    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
#include <iostream>
#include <string>
struct Pizza
{
    std :: string Name ;
    double netto;
    int Ccal;
    };
int main ()
{   using namespace std;
    Pizza *pz =new Pizza;
    cout<<"Enter diametr:"<<endl;
    cin>>(*pz).netto;
    cout<<"Enter Name:"<<endl;
    cin>>(*pz).Name ;
    cout<<"Enter ves:"<<endl;
    cin>>(*pz).Ccal;
    cout<<"Pizza: "<<(*pz).Name<<endl;
    cout<<"Diametr: "<<(*pz).netto<<endl<<"Ves: "<<(*pz).Ccal<<endl;
    system ("pause");
    delete pz;
    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
#include <iostream>
#include <string>
struct CandyBar
    {
        std::string Name  ;
        double netto;
        int Ccal;
    };
void main ()
{ 
    using namespace std;
    CandyBar *bar= new CandyBar[3];
    bar[0].Name="Mocha Much";
    bar[0].netto=2.3;
    bar[0].Ccal=350;
    bar[1].Name="sfdsfsdf";
    bar[1].netto=2.45;
    bar[1].Ccal=435;
    bar[2].Name="bnderlogi";
    bar[2].netto=2.12;
    bar[2].Ccal=777;
    cout<<"Struct  "<<bar[0].Name<<"    "<<bar[0].netto<<"   "<<bar[0].Ccal<<endl;
    system("pause");
    delete bar;
          }

Задача №10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
int main ()
{ 
    using namespace std;
    int bar[3];
    cout<<"Vvedite rezyltat 1 "<<endl;
    cin>>bar[0];
    cout<<"Vvedite rezyltat 2 "<<endl;
    cin>>bar[1];
    cout<<"Vvedite rezyltat 3 "<<endl;
    cin>>bar[2];
    int Sr=(bar[0]+bar[1]+bar[2])/3;
    cout<<"Rezyltat  "<<bar[0]<<"    "<<bar[1]<<"   "<<bar[2]<<"  Srednee "<<Sr<<endl;
    system("pause");
}


Задачи из глав с 4 о 10, решенные gru74ik
7
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2015, 12:20
Ответы с готовыми решениями:

Пример с книги Стивена Прата (Язык программирования с++). Расхождение в ответе
В книге один ответ. У меня другой выходит (На русский перевод, не обращайте внимание) Сама...

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

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

Вклады, простые и сложные проценты (вопрос из учебника С. Прата)
Изучаю книгу С. Прата. В главе 5 у него присутствует такая задача: Дафна сделала вклад на сумму...

Программа из учебника Прата. Структуры в многофайловом приложении. Исправить недочеты в коде
Посмотрите, пожалуйста, что где исправить. int fill()-для заполнения массива all-для вывода суммы...

211
Nikitich_
8 / 1 / 0
Регистрация: 14.08.2018
Сообщений: 17
26.09.2018, 14:23 201
Глава 12. Упражнение 4. Выложу только класс и реализацию методов. Программу поленился писать адекватную, у себя проверил примитивно.
Stack.h
Кликните здесь для просмотра всего текста
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
#pragma once
#ifndef STACK_H_
#define STACK_H_
 
typedef unsigned long Item;
 
class Stack
{
private:
    //enum { MAX = 10 }; 
    Item * pitems;      
    int size;
    int top;            
public:
    Stack(int n = 10);
    Stack(const Stack & st);
    ~Stack();
    bool isempty() const;
    bool isfull() const;
    bool push(const Item & item);   
    bool pop(Item & item);          
    Stack & operator=(const Stack & st);
};
#endif

Stack.cpp
Кликните здесь для просмотра всего текста
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 "Stack.h"
 
Stack::Stack(int n)
{
    top = 0;
    size = n;
    pitems = new Item[size];
}
 
Stack::Stack(const Stack & st)
{
    size = st.size;
    top = st.top;
    pitems = new Item[size];
    for (int i = 0; i < size; i++)
        pitems[i] = st.pitems[i];
}
 
bool Stack::isempty() const
{
    return top == 0;
}
 
bool Stack::isfull() const
{
    return top == size;
}
 
bool Stack::push(const Item & item)
{   
    if (top < size)
    {
        pitems[top++] = item;
        return true;
    }
    else
        return false;
}   
 
bool Stack::pop(Item & item)
{
    if (top > 0)
    {
        item = pitems[--top];
        return true;
    }
    else
        return false;
}
 
Stack & Stack::operator=(const Stack & st)
{
    if (this == &st)
        return *this;
    delete[] pitems;
    size = st.size;
    top = st.top;
    pitems = new Item[size];
    for (int i = 0; i < size; i++)
        pitems[i] = st.pitems[i];
}
 
Stack::~Stack()
{
    delete[] pitems;
}
0
use_man
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 22
20.10.2018, 21:00 202
Всем привет , только начал учиться на С++ столкнулся с 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
// Напишите  программу , которая выдает запрос на ввод значений часов и минут. Функция main() должна передать эти два значения  функции имеющей тип void , которая отобразит эти два значения в след. виде :
 
Enter the number of hours : 9
Enter the number of minutes: 28
Time: 9 : 28
 
 Выдает ошибку :
1>ConsoleApplication7.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl t_function(int)" (?t_function@@YAXH@Z) в функции _main
1>D:\C++\#1\ConsoleApplication7\Debug\ConsoleApplication7.exe : fatal error LNK1120:неразрешенных внешних элементов:1
 
Вот что написал :
 
#include "pch.h"
#include <iostream>
using namespace std;
void t_function(int);
 
int main()
{
    cout << "Enter the number of hours: ";
    int h;
    int m;
    cin >> h;
    cout << "Enter the number of minutes: ";
    cin >> m;
    t_function(h);
    t_function(m);
    t_function(1);
    return 0;
        
}
void t_function(int*d , int s)
{
    
    cout << "Time: " << d << ":" << s << endl;
 
}
Можете объяснить как ввести несколько аргументов в функцию и потом выловить их там и оперировать ими в ней что бы например реализовать данную задачу ?

Добавлено через 44 минуты
Уже , сам разобрался )).
0
UselessMouth
0 / 0 / 0
Регистрация: 04.02.2018
Сообщений: 3
30.12.2018, 17:31 203
Глава 18, упражнение 4

"Переделайте программу в листинге 16.5 для использования лямбда-выражений. В частности, замените функцию out int () именованным лямбда-выражением, а два случая использования функтора — двумя анонимными лямбда-выражениями."

Но в листинге 16.5 нет функции outint(). Это опечатка? О каком листинге идёт речь?

Листинг 16.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
#include <iostream>
#include <string>
#include <memory>
 
using namespace std;
 
class Report
{
private:
    string str;
public:
    Report(const string s) : str(s) { cout << "Object created!\n"; }
    ~Report() { cout << "Object deleted!\n"; }
    void comment() const { cout << str << endl; }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    {
        auto_ptr<Report> ps(new Report("using auto_ptr"));
        ps->comment();
    }
    {
        shared_ptr<Report> ps(new Report("using shared_ptr"));
        ps->comment();
    }
    {
        unique_ptr<Report> ps(new Report("using unique_ptr"));
        ps->comment();
    }
 
    return 0;
}
0
Afobazol
0 / 0 / 0
Регистрация: 19.01.2019
Сообщений: 1
19.01.2019, 18:07 204
Прежде всего, низкий Вам поклон sourcerer за ваши примеры решенных заданий! Некоторые моменты очень помогли, когда руки совсем опускались от безысходности. Вы проделали серьезную работу и она важна для начинающих.

Один момент хотел уточнить по поводу задания 11.7
В условиях задачи отображена формула, по которой применяется вычесление умножения для complex number
Multiplication:a × c = (A × C - B×D, (A×D + B×C)i)

в файле описания методов ComplexNumber.cpp вы используете следующую строчку(№32):
ComplexNumber mult(c1.m_real * c2.m_real, c1.m_imag * c2.m_imag);
которая, на мой взгляд, не соответствует условию, а похожа на обычную операцию умножения. Может я что-то упустил, но на выходе у вас результат соответствует оригинальному варианту? Объясните, пожалуйста, если так.
0
use_man
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 22
30.01.2019, 15:43 205
Всем привет , так и не нашел тут решение 12 главы 5 упражнение , может кто делал или у кого остался исходник киньте если не трудно , задачу и понимаю и не понимаю оновременно .
0
sourcerer
Модератор
Эксперт CЭксперт С++
4993 / 2175 / 330
Регистрация: 20.02.2013
Сообщений: 5,596
Записей в блоге: 24
Завершенные тесты: 1
30.01.2019, 23:32 206
Цитата Сообщение от Afobazol Посмотреть сообщение
которая, на мой взгляд, не соответствует условию, а похожа на обычную операцию умножения. Может я что-то упустил, но на выходе у вас результат соответствует оригинальному варианту? Объясните, пожалуйста, если так.
Afobazol, да, Вы правы:
C++
1
2
3
4
5
6
7
8
9
10
// умножение двух комплексных чисел происходит по правилу
// (a + bi) * (c + di) = (ac – bd) + (ad + bc)i
// (здесь как раз используется, что i2 = –1)
ComplexNumber operator*(const ComplexNumber & c1, const ComplexNumber & c2)
{
    ComplexNumber mult(
        c1.m_real * c2.m_real - c1.m_imag * c2.m_imag,
        c1.m_real * c2.m_imag + c1.m_imag * c2.m_real);
    return mult;
}
0
DanKor1498
8 / 8 / 4
Регистрация: 15.04.2018
Сообщений: 40
22.09.2019, 19:08 207
Давно хотел выложить, здесь решение всех задач з учебника 6 - го издания(последнего), с 2 главы и по 18. В каждой папке есть текстовый документ з заданием + решение.
0
Вложения
Тип файла: rar Решение задач, главы 2 - 18.rar (182.6 Кб, 18 просмотров)
number_118
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
05.02.2020, 22:10 208
Цитата Сообщение от sourcerer Посмотреть сообщение
/*
Дафна инвестировала $100 под простые 10%. Другими словами, ежегодно
инвестиция должна приносить 10% инвестированной суммы, т.е. $10 каждый год:
прибыль = 0,10 х исходный баланс
В то же время Клео инвестировала $100 под сложные 5%. Это значит, что прибыль
составит 5% от текущего баланса, включая предыдущую накопленную прибыль:
прибыль = 0,05 х текущий баланс
Клео зарабатывает 5% от $100 в первый год, что дает ей $105. На следующий
год она зарабатывает 5% от $105, что составляет $5.25, и т.д. Напишите
программу, которая вычислит, сколько лет понадобится для того, чтобы сумма
баланса Клео превысила сумму баланса Дафны, с отображением значений обоих
балансов за каждый год.
*/
Я по-другому решил, но, как уже обсуждалась причина, незачем спешить делиться целиком кодом, но мне приятно было решить

Через функции сделал: поинтереснее функция Cleo_Complex cо static int i + функция daph_income,
получил те же 27 лет
0
number_118
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
06.02.2020, 18:50 209
Кликните здесь для просмотра всего текста
Цитата Сообщение от sourcerer Посмотреть сообщение
//  sp_Ch6_Pg300_Ex03
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 6, страница 300, упражнение 3.
/*
Напишите предшественник программы, управляемой меню. Она должна
отображать меню из четырех пунктов, каждый из них помечен буквой. Если
пользователь вводит букву, отличающуюся от четырех допустимых, программа
должна повторно приглашать его ввести правильное значение до тех пор, пока
он этого не сделает. Затем она должна выполнить некоторое простое действие
на основе пользовательского выбора. Работа программы должна выглядеть
примерно так:
Please enter one of the following choices:
c) carnivore p) pianist
t) tree g) game
f
Please enter a c, p, t, or g: q
Please enter a c, p, t, or g: t
A maple is a tree.


Закомментировал
Цитата Сообщение от sourcerer Посмотреть сообщение
cin.clear();
        while (cin.get() != '\n');
-- разница не обнаруживается. Всё-таки.
0
XLAT
991 / 640 / 246
Регистрация: 23.09.2014
Сообщений: 2,168
Записей в блоге: 3
06.02.2020, 19:26 210
Цитата Сообщение от number_118 Посмотреть сообщение
разница не обнаруживается. Всё-таки.
вы эту разницу обнаружите очень сразу,
как только попытаетесь запустить свою прогу за пределами своей IDE.
0
number_118
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
09.02.2020, 16:41 211
XLAT, дело не в этом, а в том, чтобы попробовать ввести текст.
0
number_118
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 395
11.02.2020, 17:29 212
Цитата Сообщение от sourcerer Посмотреть сообщение
Глава 7. Упражнение 2
Работает далеко от идеала (к слову сказать):

Решение всех задач из учебника Стивена Прата
0
Миниатюры
Решение всех задач из учебника Стивена Прата  
11.02.2020, 17:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2020, 17:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
212
Ответ Создать тему
Опции темы

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