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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 621, средняя оценка - 4.99
Kimel
15 / 15 / 0
Регистрация: 01.02.2012
Сообщений: 182
01.02.2012, 17:47     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #1
Хотя я и начинающий с++-шник. Хочу помочь другим людям. Здесь я буду выкладывать всё что мне удалось решить. В моих решениях будет много хедеров, делал я это в Dev C++. Ос Win 7 64 bit.

Начнём со второй главы:
Упражнение 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
 
using namespace std;
 
int main()
{
   setlocale(0,"Rus");
   float gallons, cufeet;
 
   cout << "Введите количество галоннов: \n";
   cin >> gallons;
   cufeet = gallons / 7.481;
   cout << "Еквивалент в футах = " << cufeet << endl;
    
   return 0;
}

Упражнение 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
#include <iomanip>
 
using namespace std;
 
int main()
{
   setlocale(0,"Rus");
   
    cout << 1990 << setw(8) << 135 << endl
           << 1991 << setw(8) << 7290 << endl 
           << 1992 << setw(8) << 11300 << endl
           << 1993 << setw(8) << 16200 << endl;
  
   return 0;
}

Упражнение 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream> 
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    int var = 10;
 
    cout << var << endl;      
    var *= 2;                 
    cout << var-- << endl;    
    cout << var << endl;      
    return 0;
}

Упражнение 4
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream> 
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    cout<<"\nУ лукоморья дуб срубили\nКота на мясо порубили \nА по неведанным дорожкам\nШагали черти в босоножках\n"; 
    return 0;
}

Упражнение 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
#include <ctype.h>
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    char ch;
    cin >> ch;
    cout << islower(ch);  // При вводе строчной буквы будет 2 при прописной 0. Но есть нюанс, поддерживаються только англ буквы 
    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
#include <iostream> 
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
 
    float a,b,c,d,f;
    cout << "Введите кол-во доларов"<<endl;
    cin >> f;
    b=f/1.487;
    c=f/0.172;
    a=f/0.584;
    d=f/0.00955;
    cout << f <<"доларов = "<< b<<" фунтов стерлинга"<<endl;
    cout << f <<"доларов = "<< c<<" франков"<<endl;
    cout << f <<"доларов = "<< a<<" немецких марок"<<endl;
    cout << f <<"доларов = "<< d<<" японских йен"<<endl;
    return 0;
}

Упражнение 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream> 
#include <iomanip>
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    double f,c;
    cout << "Введите количество градусов по Цельсию"<<endl;
    cin >> c;
    f=c*1.8+32;
    cout <<setprecision(3)<< f << " градусов по Фаренгейту "<< endl; // Регуляция кол-во символов после запятой
    return 0;
}

Упражнение 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
#include <iomanip>
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    long pop1=2425785, pop2=47, pop3=9761;       
 
    cout << setfill('.') <<setw(8) << "LOCATION" << setw(12) // Обратите внимание на одинарные кавычки
           << "POPULATION" << endl
           <<setw(8) << "Portcity" << setw(12) << pop1 << endl
           << setw(8) << "Hightown" << setw(12) << pop2 << endl
           << setw(8) << "Lowville" << setw(12) << pop3 << endl;
    return 0;
}

Упражнение 9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    char dummychar;
    double a,b,c,d,e,f;
    cout << "Введите а и b"<< endl;
    cin >>a>>dummychar>>b;
    cout << "Введите c и d"<<endl;
    cin >>c>>dummychar>>d;
    cout <<(b*c)+(d*a)<<dummychar<<(b*d)<<endl;
 
    return 0;
}

Упражнение 10 (Намучился с этой задачей)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
 
using namespace std;
 
int main() 
{
    setlocale(0,"Rus");
    float a,b,c,f;
    cout << "Введите количество фунтов"<<endl;
    cin >> a;
    cout << "Введите количество шиллингов"<<endl;
    cin >> b;
    cout << "Введите количество пенсов"<<endl;
    cin >> c;
    f = a+(b+c/12)/20;
    cout << "Количество фунтов = " << f << endl;
    return 0;
}

Упражнение 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
#include <iomanip>
 
using namespace std;
 
int main() 
{
     setlocale(0,"Rus");
     cout << setiosflags(ios::left) <<setw(15) << "Фамилия"<< setw(15)<< "Имя"<<setw(15) << "Адресс"<<setw(15)<< "Город"<<endl
            <<setw(15)<< "Иванов"<<setw(15)<<"Петя"<<setw(15)<<"Кленовая 16"<<setw(10)<<"Москва"<<endl
            <<setw(15)<< "Иванов"<<setw(15)<<"Петя"<<setw(15)<<"Кленовая 16"<<setw(10)<<"Москва"<<endl
            <<setw(15)<< "Иванов"<<setw(15)<<"Петя"<<setw(15)<<"Кленовая 16"<<setw(10)<<"Москва"<<endl;
    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
#include <iostream> 
 
using namespace std;
 
int main() 
{
setlocale(0,"Rus");
float a,b,z;
int c,k;
cout << "Введите кол-во футов " << endl;
cin >> a;
c = static_cast<int>(a);
b = a - c;
b *= 20;
k = static_cast<int>(b);
z = b - k;
z = z*12;
z = static_cast<int>(z);
k = static_cast<int>(k);
cout << c <<"."<< k <<"."<< z << endl;
return 0;
}
Это конец второй главы, третюю сделаю позже если будет нужна
 Комментарий модератора 
Пост обновлен по просьбе ТС
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 17:47     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Посмотрите здесь:

Объектно-ориентированное программирование C++
C++ Объектно-ориентированное программирование
C++ Объектно ориентированное программирование
Ищу ответы на задания из книги Лафоре Р. "Объектно-ориентированное программирование в С++" 4 издание. C++
C++ Объектно-ориентированное программирование C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vve
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 2
18.04.2016, 14:09     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #281
Ferrari F1, пробовал.

Добавлено через 23 минуты
Проблема решена.
В опциях компилятора во вкладке Settings -> C++ compiler стояло "Yes" напротив "Turn off all access checking"...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eragorn2013
0 / 0 / 0
Регистрация: 01.04.2016
Сообщений: 9
25.05.2016, 23:03     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #282
Не могу понять в главе 11 упражнении 8 принцип работы char chifra [LEN]; в нее загружаются символы цифр. Например первое число 123456,88. Когда будет загружаться второе число, по идее если оно будет короче первого, например 321,78 то по сути должны остаться числа из первой строки и при следующей итерации должно получиться что-то вроде 321,78,88 в итоге. Насколько мне подсказывает логика char chifra [LEN]; должна обнуляться. Но я не нашел этого в коде. При этом код работает корректно. Подскажите, куда смотреть?
Recrut_rf
6 / 6 / 0
Регистрация: 14.10.2014
Сообщений: 44
Завершенные тесты: 2
26.05.2016, 13:26     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #283
Eragorn2013, Выложи здесь код, а то без него вообще ничего непонятно
plvnkvzmzd
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 7
01.06.2016, 20:45     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #284
Глава 11, Номер 6 и 7 программа не идёт. На этом моменте выдаёт ошибку:
C++
1
money = stold(arr);
Как её решить собственно? Уже голову сломал.
Миниатюры
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"  
Fizik27
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 1
05.07.2016, 10:31     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #285
Лови:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    for (int number = 0; number < 20; number++)
    {
        cout << setw (40 - number * 2) << " ";
        for (int i = number * 2 + 1; i > 0; i--)
            cout << 'x';
        cout << endl;
    }
    system ("pause");
    return 0;   
}
P.S. Народ, если вдруг заподозрите в гавно-коде - просьба напишите что не так. Только учусь, поэтому с радостью выслушаю любую адекватную критику в свой адрес. Заранее спасибо)
Cruc
0 / 0 / 0
Регистрация: 26.01.2016
Сообщений: 1
28.07.2016, 16:09     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #286
А почему бы нет? Например, так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//////// Отсев неиспользуемых дробей //////////////////////
        bool operator== (fraction frx)
    {
        if ( num==frx.num && den==frx.den)  return 1;   
        else return 0;  
    }
};
 
int main()
{
setlocale (LC_CTYPE,"rus");
fraction fr1, fr2, fr3, fr4(1,0,0), fr5(0,0,0), fr6(1,1,0) ;
char opfr, yn;
do
{
 
    cout<<"Первая дробь:"<<endl;
    fr1.putfr();
    if (fr1 == fr4|| fr1 == fr5 || fr1 == fr6) { cout<<"Неверная дробь!"<<endl; break;}
    cout<<"Вторая дробь:"<<endl;
    fr2.putfr();
    if (fr2 == fr4|| fr2 == fr5 || fr2 == fr6) { cout<<"Неверная дробь!"<<endl; break;}
    cout<<"Выберите тип операции (+,-,/,*): ";
Добавлено через 20 минут
Глава 8, упражнение 7.
Перегрузка операции ==.
Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//////// Отсев неиспользуемых дробей //////////////////////
        bool operator== (fraction frx)
    {
        if ( num==frx.num && den==frx.den)  return 1;   
        else return 0;  
    }
 
};
int main()
{
setlocale (LC_CTYPE,"rus");
fraction fr1, fr2, fr3, fr4(1,0,0), fr5(0,0,0), fr6(1,1,0);
char opfr, yn;
do
{
    cout<<"Первая дробь:"<<endl;
    fr1.putfr();
    if (fr1 == fr4|| fr1 == fr5 || fr1 == fr6) { cout<<"Неверная дробь!"<<endl; break;}
    cout<<"Вторая дробь:"<<endl;
    fr2.putfr();
    if (fr2 == fr4|| fr2 == fr5 || fr2 == fr6) { cout<<"Неверная дробь!"<<endl; break;}
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
26.10.2016, 10:55     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #287
Глава 7 задача 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
#include <iostream>
#include <cstdlib>
#include <locale.h>
#include <sstream>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
class money{
    private:
        double inp;     
        string st,ct;
        int wlen,m,z;       
    public:
        money() {z=0;m=0;inp=0.00;}
        void input(){
            st="";
            ct="";
            cout<<"\nÂâîä (Г¬Г*ГЄГ±: - 9999999999999990.00):\n";
        cin>>inp;
        if(inp>9999999999999990.00){cout<<"\nÑëèøêîì áîëüøîå ÷èñëî!\n"; exit(1);}
        }
        void ldtoms(){
        stringstream oss;
        oss<<fixed<<inp;
        oss>>st;    
        }
        void work(){
        
        wlen = st.length();
        z=wlen;
        for(int j = 0; j!=z; j++){          
            if(st[j]=='.'){z=j+3;}
            ct+=st.at(j);
            };
            wlen = ct.length();
            st="";          
            for(int j = wlen; j>=0; j--){
            if(ct[j]=='.'){m=-1;}
            if(wlen>6){if((m%3)==0&&(wlen-j)>6){st+=',';}}
            st+=ct[j];
            m++;
            };          
            wlen = st.length();         
            ct="$";
            for(int j = wlen; j>0; j--){
            ct+=st[j];
            };  
        cout<<endl<<ct;};
};
 
int main()
{
     setlocale( LC_ALL, "Russian" );
char ch;
money m1;
do{
m1.input();
m1.ldtoms();
m1.work();
cout<<"\nÏîâòîðèòü? Y/N\n";
ch=getch();
}while(ch!='n');
return 0;
}


Добавлено через 22 часа 52 минуты
не совсем понял это задание. (зачем так много методов?)
глава 7 задача 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
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <locale.h>
#include <sstream>
#include <cstring>
#include <conio.h>
 
using namespace std;
/////////////////////////////////////////////////////////////////////////////
class bMoney{
    private:
        double money;
        static double mon_sum;
        string st;
    public:
        bMoney(){};
        void madd();
        void getmoney();
        void putmoney();        
};
/////////////////////////////////////////////////////////////////////////////
void bMoney::putmoney(){
    st="";
    cout<<"\nÂâåäèòå ñóììó: ";
    cin>>st;
    money=strtold(st.c_str(),NULL);
}
void bMoney::getmoney(){
    st="";
    stringstream oss;
    oss<<fixed<<mon_sum;
    oss>>st;
    cout<<"\nГЋГЎГ№Г*Гї ñóììГ* ââåäåГ*îãî: "<<st;
}
void bMoney::madd(){
    mon_sum+= money;    
}
/////////////////////////////////////////////////////////////////////////////
double bMoney::mon_sum=0;
 
int main()
{
setlocale( LC_ALL, "Russian" );
char ch;
do{
bMoney m1;
m1.putmoney();
m1.madd();
m1.getmoney();
cout<<"\nÅùå ââîä? Y/N\n";
ch=getch();
}while(ch!='n');
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2016, 11:16     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Еще ссылки по теме:

Объектно-ориентированное программирование C++
Разобраться в примерх к книге Лафоре "Обьектно-ориентированое программирование в С++" C++
C++ Объектно-ориентированное приложение: "Эмулятор банкомата"

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

Или воспользуйтесь поиском по форуму:
Recrut_rf
6 / 6 / 0
Регистрация: 14.10.2014
Сообщений: 44
Завершенные тесты: 2
27.10.2016, 11:16     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" #288
mpol, Один метод для перевода строки в число, другой наоборот из числа в строку. Плюс метод для складывания двух объектов одного класса (bMoney). Ну и два стандартных метода для ввода и вывода данных. Всё же в задании изложено...
Yandex
Объявления
27.10.2016, 11:16     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Ответ Создать тему
Опции темы

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