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

—++ дл€ начинающих

¬ойти
–егистраци€
¬осстановить пароль
 
 
–ейтинг: –ейтинг темы: голосов - 621, средн€€ оценка - 4.99
Kimel
15 / 15 / 0
–егистраци€: 01.02.2012
—ообщений: 182
#1

–ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" - C++

01.02.2012, 17:47. ѕросмотров 83741. ќтветов 288
ћетки нет (¬се метки)

’от€ € и начинающий с++-шник. ’очу помочь другим люд€м. «десь € буду выкладывать всЄ что мне удалось решить. ¬ моих решени€х будет много хедеров, делал € это в 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++ –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++"
»щу ответы на задани€ из книги Ћафоре –. "ќбъектно-ориентированное программирование в —++" 4 издание. C++
C++ ќбъектно-ориентированное приложение: "Ёмул€тор банкомата"
–азобратьс€ в примерх к книге Ћафоре "ќбьектно-ориентированое программирование в —++" C++
ќбъектно-ориентированное программирование C++
C++ ќбъектно-ориентированное программирование
C++ ќбъектно ориентированное программирование
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Bonaqus
2 / 2 / 0
–егистраци€: 10.01.2013
—ообщений: 15
28.01.2013, 14:45     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #21
вот мое решение, полностью корректное.

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
//3.5
#include<iostream>
using namespace std;
 
int main()
{
for(int i=0;i<20;i++)                   // количество строк
    {
    int x=i*2+1;                        // количество "’" в строке
    int y=20-i;                         // количество пробелов в строке
    for(int j=1;j<(20*2);j++)           // рисуем строку от 1 и до количество строк*2
        {
        char ch;                        // объ€вленние переменной, котора€ печатаетс€
        if (j<y)                        // если значение счетчика меньше чем количество пробелов в строке, то 
            {
            ch=' ';                     // переменна€ вывода равна " "
            }
        else if((j>=y)&&(j<(x+y)))      // если значение счетчика больше чем количес-
            {                           // тво " "  и меньше чем количество "’"+" ", то
            ch='X';                     // переменна€ вывода равна "’"
            }
        else break;                     // если все услови€ исчерпаны, выходим из цикла
        cout<<ch;                       // и печатаем переход на новую строку
        }
    cout<<endl;                         // ну и конец =)
    }
system("pause");
return 0;
}
Sabbat
135 / 23 / 1
–егистраци€: 19.10.2012
—ообщений: 43
29.01.2013, 20:02     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #22
или как то так....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
int n=20;
for (int i=1; i<=n; i++)
    {
            for(int j=1; j<=(n-i); j++) 
                cout<<' ';
            for(int j=1; j<=1+(i-1)*2; j++) 
                cout<<'X';
        cout<<endl;
    }
system("pause"); 
return 0;
}
Bonaqus + 1
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
05.02.2013, 15:17     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #23
ћое решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    char p=' ', x='x';
    for (int s=0; s<=19; s++)//цикл строк
    {
        for (int sim=1; sim<=80; sim++)//цикл заполнени€ строки символами
        {
            if (sim<=40-s-1)
                cout <<p;
            else if (sim>=40+s+1)
                cout <<p;
            else cout <<x;
        }
    }
    system ("pause >>void");
ƒобавлено через 1 час 43 минуты
„уть чуть сократил код:

C++
1
2
3
4
5
6
7
8
9
10
11
    char p=' ', x='x';
    for (int s=0; s<=19; s++)//цикл строк
    {
        for (int sim=1; sim<=80; sim++)//цикл заполнени€ символов
        {
            if ((sim<=40-s-1)||(sim>=40+s+1))
                cout <<p;
            else cout <<x;
        }
    }
    system ("pause >>void");
ƒобавлено через 14 минут
–ешение глава 3 задача є6:

 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    char ch;
    unsigned long fact=1, r=0;
    cout <<"¬ведите число: ";
    while ((ch=_getche()) !='0')
    {
        r= r* 10+ ch -'0';//получаем число в long
        for (int j=r; j>0; j--)//цикл дл€ расчета факториала
            fact *=j;//расчет факториала
    }
    
    cout <<"\n‘акториал числа равен: " <<fact <<endl;
    
    system ("pause >>void");


ƒобавлено через 1 час 43 минуты
–ешение глава 3 задача є7:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
    int g;
    double p, v;
    cout <<"¬ведите начальный вклад: "; cin >>v;
    cout <<"¬ведите число лет: "; cin >>g;
    cout <<"¬ведите процентную ставку: "; cin >>p;
    for (int j=1; j<=g; j++)
        v =v +(v*(p/100.0));
    cout <<"\n„ерез " <<g <<" лет вы получите: " <<v <<" доллара" <<endl;
    system ("pause >>void");


ƒобавлено через 19 часов 25 минут
–ешение глава 3 задача є8:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int a, b, c, d, e, f, x, y, z;
    char ch;
    do {
        cout <<"\n¬ведите первую сумму: \x9c "; cin >>a >>b >>c;
        cout <<"¬ведите вторую сумму: \x9c "; cin >>d >>e >>f;
        z=c+f;//рассчет пенсов
        y=b+e;//рассчет шиллингов
        x=a+d;//рассчет фунтов
        if (z>11)(y+=1)&&(z=z%12);//если сумма пенсов >11, то прибавл€ем к сумме шиллингов 1 и приводим сумму пенсов к виду кратной 12
        if (y>19)(x+=1)&&(y=y%20);//если сумма шиллингов >19, то прибавл€ем к сумме фунтов 1 и приводим сумму шиллингов к виду кратной 20
        cout <<"¬сего: \x9c " <<x <<"." <<y <<"." <<z <<endl;
        cout <<"ѕродолжить? (y/n)";
    } while ((ch=_getche())!='n');


ƒобавлено через 2 часа 57 минут
–ешение глава 3 задача є9:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
    int h, r, s;
    unsigned long v=1;
    do  {
        cout <<"¬ведите число гостей: "; cin >>h;
        cout <<"¬ведите число мест за столом: "; cin >>s;
        } while (h<s);//гостей не должно быть меньше чем количество стульев
    r=h-s;//скольки гост€м не достанетс€ мест
    for (int j=h; j>r; j--) v*=j;//рассчет факториала возможных рассадок
    cout <<"„исло возможных рассадок гостей за столом равно: " <<v <<endl;
    system ("pause >>void");


ƒобавлено через 2 часа 20 минут
–ешение глава 3 задача є10:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int g=0;//переменна€ дл€ подсчета кол-ва лет
    double p, v, vk;
    cout <<"¬ведите начальный вклад: "; cin >>v;
    cout <<"¬ведите конечную сумму: "; cin >>vk;
    cout <<"¬ведите процентную ставку: "; cin >>p;
    while (v<=vk)//цикл работает пока начальный вклад не станет равен или больше конечного 
    {
        v=v+(v*(p/100.0));//расчет суммы с процентами за год
        g++;//счетчик лет
    }
    cout <<"ƒл€ получени€ конечной суммы требуетс€: " <<g <<"лет" <<endl;
    system ("pause >>void");
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
08.02.2013, 21:59     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #24
–ешение глава 3 задача є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
    int a, b, c, e, f, x, y, z;
    double d, x1, y1, z1;
    char si;
    do {
        cout <<"¬ведите первое число, знак операции, второе число: "; cin >>a >>b >>c >>si >>d >>e >>f;
        //при умножении ввод выгл€дит так: 1 3 7 * 2.856 0 0
        switch (si)
            {
                case '+': x=a+d; y=b+e; z=c+f;
                    if (z>11) {++y; z%=12;}//если пенсов больше 11, то прибавл€ем к кол-ву шиллингов +1 и пенсы кратны 12
                    if (y>19) {++x; y%=20;}//если шиллингов больше 19, то фунтам прибавл€ем +1, а шиллинги кратно 12
                    break;
                case '-': x=a-d; y=b-e; z=c-f;
                    if (z<0) {--y; z+=12;}//если пенсов меньше 0, то вычитаем из шиллингов 1, а пенсы приводим к положительному числу прибавл€€ 12
                    if (y<0) {--x; y+=20;}//если шиллингов меньше 0, то вычитаем из фунтов 1, а шиллинги приводим к положительному числу прибавив 20
                    break;
                case '*': x1=a*d; y1=b*d; z1=c*d;
                    x=static_cast<int>(x1); y=static_cast<int>(y1); z=static_cast<int>(z1);
                    if (z>11) {y+=(z/12); z%=12;}//если пенсов больше 11, то получаем количество +шиллингов(z/12), далее к шиллингами прибавл€ем +шиллинги, и пенсы кратны 12
                    if (y>19) {x+=(y1/20); y%=20;}//если шиллингов больше 19, то получаем кол-во +фунтов(y/20), далее к фунтам прибавл€ем +фунты и шиллинги кратны 20
                    break;
            }
        cout <<x <<"." <<y <<"." <<z <<endl;
        cout <<"≈ще раз? (y/n)" <<endl;
    } while ((si=_getche())!='n');


ƒобавлено через 2 часа 4 минуты
–ешение глава 3 задача є12:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    double a ,b, c, d, r;
    char ch, d1, d2;
    do {
        cout <<"\n¬ведите первый операнд, затем знак операции и второй операнд: "; cin >>a >>d1 >>b >>ch >>c >>d2 >>d;
        switch (ch)
        {
        case '+': r=(a*d+b*c)/(b*d);
            break;
        case '-': r=(a*d-b*c)/(b*d);
            break;
        case '*': r=(a*c)/(b*d);
            break;
        case '/': r=(a*d)/(b*c);
            break;
        }
        cout <<"–езультат равен: " <<r <<endl;
        cout <<"≈ще раз? (y/n)";
    } while ((ch=_getche())!='n');


ƒобавлено через 3 часа 9 минут
÷итата —ообщение от muradasilov ѕосмотреть сообщение
спасибо за помошь, но у ¬ас та же проблема, посмотрите пошаговое выполнение программы.
ѕрилагаю скрин выполнени€ программы, результат снова не корректный((((
¬от как раз в той строке где отдел€етс€ дес€тична€ часть(в моем случае 0.65), и после умножени€ на 20 по формуле

(shiling = new_pens * 20 =0.65*20=13),

и после

int_shiling = static_cast<int>(shiling),

число 13 становитс€ 12. –азъ€сните плиз, каким образом????
мое решение посмотрите пошагово- там sh1 получаетс€ 12.9999924, что округл€етс€ до 12
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
15.02.2013, 23:34     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #25
решени€ 4й главы нужны?
Sabbat
135 / 23 / 1
–егистраци€: 19.10.2012
—ообщений: 43
16.02.2013, 22:08     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #26
÷итата —ообщение от Kins ѕосмотреть сообщение
решени€ 4й главы нужны?
Ѕыло бы неплохо. (7-е упражнение хочу сверить)
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
16.02.2013, 22:50     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #27
÷итата —ообщение от Sabbat ѕосмотреть сообщение
Ѕыло бы неплохо. (7-е упражнение хочу сверить)
там длинный код со свитчами(

ƒобавлено через 2 минуты
√лава 4 ”пражнение є4
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
////////////////////////////////////
struct employee
{
    int number;
    float posobie;
};
////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    employee s1, s2, s3;
    cout <<"¬ведите данные о 1 сотруднике: личный номер и величину его пособи€ в долларах\n";
    cin >>s1.number >>s1.posobie;
    cout <<"¬ведите данные о 2 сотруднике: личный номер и величину его пособи€ в долларах\n";
    cin >>s2.number >>s2.posobie;
    cout <<"¬ведите данные о 3 сотруднике: личный номер и величину его пособи€ в долларах\n";
    cin >>s3.number >>s3.posobie;
    cout <<s1.number <<" " <<s1.posobie <<endl;
    cout <<s2.number <<" " <<s2.posobie <<endl;
    cout <<s3.number <<" " <<s3.posobie <<endl;
    system ("pause");


ƒобавлено через 2 минуты
√лава 4 ”пражнение є5
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int dd, mm, yy;
char ch;
////////////////////////////////////
struct date
{
    int day;
    int mon;
    int year;
};
///////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    cout <<"¬ведите дату потипу: dd/mm/yyyy ";
    cin >>dd >>ch >>mm >>ch >>yy;
    date a1 ={dd, mm, yy};
    cout <<a1.day <<ch <<a1.mon <<ch <<a1.year <<endl;
    system ("pause");


ƒобавлено через 1 минуту
√лава 4 ”пражнение є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
////////////////////////////////////
enum etype {laborer, secretary, manager, accountant, executive, researcher};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    char ch;
    etype sm;
    setlocale (LC_ALL, "");
    cout <<"¬ведите первую букву должности: ";
    cin >>ch;
    switch(ch)
    {
    case 'l': sm=laborer; break;
    case 's': sm=secretary; break;
    case 'm': sm=manager; break;
    case 'a': sm=accountant; break;
    case 'e': sm=executive; break;
    case 'r': sm=researcher; break;
    }
    cout <<"ѕолное название должности: ";
    switch(sm)
    {
    case 0: cout <<"laborer"; break;
    case 1: cout <<"secretary"; break;
    case 2: cout <<"manager"; break;
    case 3: cout <<"accountant"; break;
    case 4: cout <<"executive"; break;
    case 5: cout <<"researcher"; break;
    }
    system ("pause >>void");


ƒобавлено через 1 минуту
√лава 4 ”пражнение є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
82
83
84
85
86
87
88
89
90
////////////////////////////////////
enum etype {laborer, secretary, manager, accountant, executive, researcher};
////////////////////////////////////
struct date
{
    int day;
    int mon;
    int year;
};
////////////////////////////////////
struct employee
{
    int number;
    float posobie;
    date data;
    etype prof;
};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    char ch, ch1, ch2, ch3;
    employee s1, s2, s3;
    cout <<"¬ведите номер сотрудника, заработную плату, должность, дату приема на работу\n";
    cin >>s1.number >>s1.posobie >>ch1 >>s1.data.day >>ch >>s1.data.mon >>ch >>s1.data.year;
    cin >>s2.number >>s2.posobie >>ch2 >>s2.data.day >>ch >>s2.data.mon >>ch >>s2.data.year;
    cin >>s3.number >>s3.posobie >>ch3 >>s3.data.day >>ch >>s3.data.mon >>ch >>s3.data.year;
    switch(ch1)
    {
    case 'l': s1.prof =laborer; break;
    case 's': s1.prof =secretary; break;
    case 'm': s1.prof =manager; break;
    case 'a': s1.prof =accountant; break;
    case 'e': s1.prof =executive; break;
    case 'r': s1.prof =researcher; break;
    }
    cout <<"¬ывод данных:" <<endl;
    cout <<s1.number <<" " <<s1.posobie <<" ";
    switch (s1.prof)
    {
    case laborer: cout <<"laborer"; break;
    case secretary: cout <<"secretary"; break;
    case manager: cout <<"manager"; break;
    case accountant: cout <<"accountant"; break;
    case executive: cout <<"executive"; break;
    case researcher: cout <<"researcher"; break;
    }
    cout <<" " <<s1.data.day <<ch <<s1.data.mon <<ch <<s1.data.year <<endl;
    switch(ch2)
    {
    case 'l': s2.prof =laborer; break;
    case 's': s2.prof =secretary; break;
    case 'm': s2.prof =manager; break;
    case 'a': s2.prof =accountant; break;
    case 'e': s2.prof =executive; break;
    case 'r': s2.prof =researcher; break;
    }
    cout <<s2.number <<" " <<s2.posobie <<" ";
    switch (s2.prof)
    {
    case laborer: cout <<"laborer"; break;
    case secretary: cout <<"secretary"; break;
    case manager: cout <<"manager"; break;
    case accountant: cout <<"accountant"; break;
    case executive: cout <<"executive"; break;
    case researcher: cout <<"researcher"; break;
    }
    cout <<" " <<s2.data.day <<ch <<s2.data.mon <<ch <<s2.data.year <<endl;
    switch(ch3)
    {
    case 'l': s3.prof =laborer; break;
    case 's': s3.prof =secretary; break;
    case 'm': s3.prof =manager; break;
    case 'a': s3.prof =accountant; break;
    case 'e': s3.prof =executive; break;
    case 'r': s3.prof =researcher; break;
    }
    cout <<s3.number <<" " <<s3.posobie <<" ";
    switch (s3.prof)
    {
    case laborer: cout <<"laborer"; break;
    case secretary: cout <<"secretary"; break;
    case manager: cout <<"manager"; break;
    case accountant: cout <<"accountant"; break;
    case executive: cout <<"executive"; break;
    case researcher: cout <<"researcher"; break;
    }
    cout <<" " <<s3.data.day <<ch <<s3.data.mon <<ch <<s3.data.year <<endl;
    system ("pause");


ƒобавлено через 56 секунд
√лава 4 ”пражнение є8
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
///////////////////////////////////
struct fraction
{
    int che;
    int zn;
};
///////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    char ch;
    fraction d1, d2, d3;
    cout <<"¬ведите две дроби: "; cin >>d1.che >>ch >>d1.zn >>d2.che >>ch >>d2.zn;
    d3.che=d1.che*d2.zn+d1.zn*d2.che;
    d3.zn=d1.zn*d2.zn;
    cout <<"–езультат a/b + c/d равен: " <<d3.che <<ch <<d3.zn <<endl;
    system ("pause");


ƒобавлено через 58 секунд
√лава 4 ”пражнение є9
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
////////////////////////////////////
struct time
{
    int hour;
    int min;
    int sec;
};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    time t1;
    cout <<"¬ведите часы, минуты и секунды: "; cin >>t1.hour >>t1.min >>t1.sec;
    long totalsec =t1.hour*3600+t1.min*60+t1.sec;
    cout <<" оличество секунд: " <<totalsec <<endl;
    system ("pause");


ƒобавлено через 53 секунды
√лава 4 ”пражнение є10
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
////////////////////////////////////
struct sterling
{
    int pounds;
    int shillings;
    int pence;
};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    double des;
    cout <<"¬ведите дес€тичные фунты: "; cin >>des;
    sterling st1;
    st1.pounds=des;
    st1.shillings=(des-st1.pounds)*20;
    st1.pence=(((des-st1.pounds)*20)-st1.shillings)*12;
    cout <<"—тарый вид: " <<st1.pounds <<"." <<st1.shillings <<"." <<st1.pence <<endl;
    system ("pause");


ƒобавлено через 51 секунду
√лава 4 ”пражнение є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
////////////////////////////////////
struct time
{
    int hrs;
    int min;
    int sec;
};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    long ttl1, ttl2, ttl;
    time t1, t2, t;
    cout <<"¬ведите первое значение времени - часы, минуты, секунды: ";
    cin >>t1.hrs >>t1.min >>t1.sec;
    cout <<"¬ведите второе значение времени - часы, минуты, секунды: ";
    cin >>t2.hrs >>t2.min >>t2.sec;
    ttl1=t1.hrs*3600+t1.min*60+t1.sec;
    ttl2=t2.hrs*3600+t2.min*60+t2.sec;
    ttl=ttl1+ttl2;
    t.hrs=ttl/3600;
    t.min=(ttl-t.hrs*3600)/60;
    t.sec=ttl-t.hrs*3600-t.min*60;
    cout <<"ќбщее врем€: " <<t.hrs <<" часов " <<t.min <<" минут " <<t.sec <<" секунд" <<endl;
    system ("pause");


ƒобавлено через 48 секунд
√лава 4 ”пражнение є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
////////////////////////////////////
struct faction
{
    int chsl;
    int znam;
};
////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "");
    faction d1, d2, d;
    char chO, ch;
    cout <<"¬ведите две дроби и знак операции между ними: ";
    cin>>d1.chsl >>ch >>d1.znam >>chO >>d2.chsl >>ch >>d2.znam;
    switch (chO)
    {
    case '+': d.chsl=d1.chsl*d2.znam+d1.znam*d2.chsl;
        d.znam=d1.znam*d2.znam;
        break;
    case '-': d.chsl=d1.chsl*d2.znam-d1.znam*d2.chsl;
        d.znam=d1.znam*d2.znam;
        break;
    case '*': d.chsl=d1.chsl*d2.chsl; d.znam=d1.znam*d2.znam;
        break;
    case '/': d.chsl=d1.chsl*d2.znam; d.znam= d1.znam*d2.chsl;
        break;
    }
    cout <<"–езультат равен: " <<d.chsl <<ch <<d.znam <<endl;
    system ("pause");
Sabbat
135 / 23 / 1
–егистраци€: 19.10.2012
—ообщений: 43
17.02.2013, 02:32     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #28
÷итата —ообщение от Kins ѕосмотреть сообщение
там длинный код со свитчами(
я немного ушел от этого когда делал, а так смысл тот же.
√лава 4 ”пражнение є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
#include <iostream>
using namespace std;
struct date
{
  int month;
  int day;
  int year;
};
enum etype {laborer, secretary, manager, accountant, executive, reseacher};
struct employee
{
  int number;
  float posobiye;
  etype dolg;
  date pos;
};
 
int main()
{
    setlocale(LC_ALL,"Russian");
    char a, b;
    int v=1;
    employee d, s1,s2,s3;
while (v != 4){
    cout<<"¬ведите номер сотрудника: ";
    cin>>d.number;
    cout<<"¬ведите величину зарплаты сотрудника: ";
    cin>>d.posobiye;
    cout<<"¬ведите первую букву должности (laborer, secretary, manager, accountant, executive, reseacher): ";
    cin>>a;
        switch(a)
        {
            case 'l': d.dolg =  laborer;    break;
            case 's': d.dolg =  secretary;  break;
            case 'm': d.dolg =  manager;    break;
            case 'a': d.dolg =  accountant; break;
            case 'e': d.dolg =  executive;  break;
            case 'r': d.dolg =  reseacher;  break;    
        }
    cout<<"¬ведите дату прин€ти€ сотрудника на работу (в формате день/мес€ц/год): ";
    cin>>d.pos.day>>b>>d.pos.month>>b>>d.pos.year;
    if (v==1) s1=d;
    if (v==2) s2=d;
    if (v==3) s3=d;
    v++;
}
    for (v=1;v<=3;v++)
    {
    if (v==1) d=s1;
    if (v==2) d=s2;
    if (v==3) d=s3;
    cout<<"\nЌомер сотрудника: "<<d.number<<endl;
    cout<<"«арплата сотрудника: "<<d.posobiye<<endl;
    cout<<"ƒолжность: ";
    switch(d.dolg)
        { 
            case    laborer: cout<<"laborer";    break;
            case  secretary: cout<<"secretary";  break;
            case    manager: cout<<"manager";    break;
            case accountant: cout<<"accountant"; break;
            case  executive: cout<<"executive";  break;
            case  reseacher: cout<<"reseacher";  break;    
        }
    cout<<"\nѕрин€т на работу: "<<d.pos.day<<b<<d.pos.month<<b<<d.pos.year<<endl;
    }
    return 0;
}
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
17.02.2013, 12:15     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #29
÷итата —ообщение от Sabbat ѕосмотреть сообщение
я немного ушел от этого когда делал, а так смысл тот же.
я тоже думал, как циклы сделать, но, так и не надумал). ј все оказалось просто.) if (v==1) s1=d
ITishnik
7 / 7 / 0
–егистраци€: 07.01.2013
—ообщений: 75
17.02.2013, 15:43     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #30
не пон€л зачем нужны эти решени€ если в книге все они есть?!
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
17.02.2013, 16:03     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #31
÷итата —ообщение от ITishnik ѕосмотреть сообщение
не пон€л зачем нужны эти решени€ если в книге все они есть?!
в книге только три- четыре самых простых.
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
03.03.2013, 01:55     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #32
√лава 5 ”пражнение є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
#include "stdafx.h"
#include <iostream>
#include <clocale>
 
using namespace std;
 
char ch;
long hms_to_sec(int, int, int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int c, m, s;
    setlocale(LC_ALL, "");
    while(ch !='n'){
        cout <<"¬ведите врем€ (чч.мм.сс): "; cin >>c >>m >>s;
        cout <<"ќбщее врем€ в секундах: " <<hms_to_sec(c, m, s) <<endl;
        cout <<"≈ще раз? (y/n): "; cin >>ch;
    }
    return 0;
}
long hms_to_sec(int chas, int min, int sec)
{
    return chas*3600+min*60+sec;
}


ƒобавлено через 49 секунд
√лава 5 ”пражнение є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
#include "stdafx.h"
#include <iostream>
#include <clocale>
 
using namespace std;
 
//////////////////////////////////////////////////////////////////
struct Time
{
    int hrs;
    int min;
    int sec;
};
//////////////////////////////////////////////////////////////////
 
char ch;
long vr;
long time_to_sec(Time, Time);
Time secs_to_time(long);
 
Time t1, t2, t;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    cout <<"¬ведите первое врем€ (чч.мм.сс): "; cin >>t1.hrs >>t1.min >>t1.sec;
    cout <<"¬ведите второе врем€ (чч.мм.сс): "; cin >>t2.hrs >>t2.min >>t2.sec;
    vr =time_to_sec(t1, t2);
    cout <<"ќбщее врем€ в секундах: " <<vr <<endl;
    t=secs_to_time(vr);
    cout <<"¬озвращенное врем€: " <<t.hrs <<":"<<t.min <<":"<<t.sec <<endl;
    system("pause");
    return 0;
}
long time_to_sec(Time t1, Time t2)
{
    vr=(t1.hrs*3600+t1.min*60+t1.sec)+(t2.hrs*3600+t2.min*60+t2.sec);
    return vr;
}
Time secs_to_time(long vr)
{
    t.hrs=vr/3600;
    t.min=(vr-t.hrs*3600)/60;
    t.sec=vr-t.hrs*3600-t.min*60;
    return t;   
}


ƒобавлено через 43 секунды
√лава 5 ”пражнение є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
#include "stdafx.h"
#include <clocale>
#include <iostream>
 
using namespace std;
 
int n, otv=1;
static int p;
char ch;
long lo, otv_lo=1;
float fl, dur=1;
 
void power(char, int);
int power(int, int);
long power(long, int);
float power(float, int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    /*cout <<"¬ведите дл€ выбора переменной: 1-ch, 2-int, 3-long, 4-float "; cin >>p;
    switch(p)
    {
    case 1: cout <<"¬ведите символ: "; cin >>ch;
        cout <<"¬ведите количество символов: "; cin >>p;
        power(ch, p); break;
    case 2: cout <<"¬ведите первое число int: "; cin >>n;
        cout <<"¬ведите второе число : "; cin >>p;
        otv=power(n, p);
        cout <<"„исло " <<n <<" в степени " <<p <<" равно" <<otv <<endl;
        break;
    case 3: cout <<"¬ведите первое число long: "; cin >>lo;
        cout <<"¬ведите степень : "; cin >>p;
        otv_lo=power(lo, p);
        cout <<"„исло " <<lo <<" в степени " <<p <<" равно" <<otv_lo <<endl;
        break;
    case 4: cout <<"¬ведите первое число float: "; cin >>fl;
        cout <<"¬ведите степень : "; cin >>p;
        cout <<"„исло " <<fl <<" в степени " <<p <<" равно: " <<power(fl, p) <<endl;
        break;
    }*/
    power(fl=6.2, 3);
    cout <<"„исло 6.2 в степени 3 равно: " <<power(fl, p) <<endl;
    power(2, 4);
    cout <<"„исло 2 в степени 4 равно: " <<power(n, p) <<endl;
    cout <<"15 символов *: "; power('*', 15);
    power(lo=1583, 2);
    cout <<"„исло 1583 в степени 2 равно: " <<power(lo, p) <<endl;
    system("pause");
    return 0;
} 
void power(char ch, int p)
{
    for (int j=1; j<=p; j++)
        cout <<ch;
    cout <<endl;
} 
int power(int chislo, int stepen)
{
    for (int j=1; j<=stepen; j++)
        otv*=chislo;
    return otv;
} 
long power(long chislo, int stepen)
{
    for (int j=1; j<=stepen; j++)
        otv_lo*=chislo;
    return otv_lo;
} 
float power(float flo, int pe)
{
    for (int j=1; j<=pe; j++)
        dur*=flo;
    return dur;
}


ƒобавлено через 42 секунды
√лава 5 ”пражнение є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
#include "stdafx.h"
#include <iostream>
#include <clocale>
 
using namespace std;
 
void swap(int&, int&);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    int a, b;
    cout <<"¬ведите первое число: "; cin >>a;
    cout <<"¬ведите второе число: "; cin >>b;
    swap(a, b);
    cout <<"ѕосле обмена значений. ѕервое число: " <<a <<" второе: " <<b <<endl;
    system("pause");
    return 0;
}
void swap(int& pervoe, int& vtoroe)
{
    int temp =pervoe;
    pervoe =vtoroe;
    vtoroe =temp;
}


ƒобавлено через 37 секунд
√лава 5 ”пражнение є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
#include "stdafx.h"
#include <iostream>
#include <clocale>
 
using namespace std;
 
////////////////////////////////////////////////////////////////
struct Time
{
    int hrs;
    int min;
    int sec;
};
////////////////////////////////////////////////////////////////
 
void swap(Time&, Time&);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    Time t1, t2;
    cout <<"¬ведите первое значение времени по типу чч мм сс: "; 
    cin >>t1.hrs >>t1.min >>t1.sec;
    cout <<"¬ведите второе значение времени по типу чч мм сс: ";  
    cin >>t2.hrs >>t2.min >>t2.sec;
    swap(t1, t2);
    cout <<"ѕосле обмена значений. ѕервое врем€: " <<t1.hrs <<':' <<t1.min <<":" <<t1.sec
        <<" второе: " <<t2.hrs <<":" <<t2.min <<":" <<t2.sec <<endl;
    system("pause");
    return 0;
}
void swap(Time& t1, Time& t2)
{
    Time t;
    t.hrs=t1.hrs; t1.hrs=t2.hrs; t2.hrs=t.hrs;
    t.min=t1.min; t1.min=t2.min; t2.min=t.min;
    t.sec=t1.sec; t1.sec=t2.sec; t2.sec=t.sec;
}
–ики
6 / 6 / 1
–егистраци€: 27.02.2013
—ообщений: 23
03.03.2013, 03:15     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #33
–ешил упражнени€ до шестой главы шестого задани€.  ак их сюда прилепить?

ƒобавлено через 21 минуту
√лава 5 ”пражнение є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
#include <iostream>
using namespace std;
int scet=0;   
int podschet ();
int main()
{ 
int k, n;
cout<< "√С√™√Ѓ√Ђ√Љ√™√Ѓ √∞√*√І √Ґ√ї√І√Ґ√*√≤√Љ √і√≥√*√™√ґ√®√Њ?"<<endl;
cin>>n;
for(int i=n;i>0;i--)
k = podschet();
cout<< "√Ф√≥√*√™√ґ√®√њ √Ґ√ї√І√ї√Ґ√*√Ђ√*√±√Љ "<<k<<" √∞√*√І."<<endl;
system("pause");
return 0;
}
///////////////////////////////////////////////////////////////////////////////
int podschet ()
{
 //static int count =0;
// count++;
 scet++; 
 return scet;
}

√лава 5 ”пражнение є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
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////
struct sterling
{
       int pounds; 
       int shillings;
       int pens;
};
//////////////////////////////////////////////////////////////
sterling vvodZnachenii();
sterling slojenieZnachenii (sterling, sterling);
void vivodZnachenia (sterling);
int main()
{
sterling st1, st2, st3;
st1 = vvodZnachenii(); 
st2 = vvodZnachenii(); 
st3 = slojenieZnachenii (st1, st2);
vivodZnachenia (st3);
system("pause");
return 0;
}
//////////////////////////////////////////////////////////////
sterling vvodZnachenii()
{
  sterling s;
  cout<< "√В√Ґ√•√§√®√≤√• √±√≥√ђ√ђ√≥"<<endl;
  cout<< "√В√Ґ√•√§√®√≤√• √™√Ѓ√Ђ√®√Ј√•√±√≤√Ґ√Ѓ √і√≥√*√≤√Ѓ√Ґ:";
  cin>>s.pounds;
  cout<< "√В√Ґ√•√§√®√≤√• √™√Ѓ√Ђ√®√Ј√•√±√≤√Ґ√Ѓ √Є√®√Ђ√Ђ√®√*√£√Ѓ√Ґ:";
  cin>>s.shillings;
  cout<< "√В√Ґ√•√§√®√≤√• √™√Ѓ√Ђ√®√Ј√•√±√≤√Ґ√Ѓ √ѓ√•√*√±√Ѓ√Ґ:";
  cin>>s.pens;
  return s;
}
//////////////////////////////////////////////////////////////
sterling slojenieZnachenii (sterling s1, sterling s2)
{
    sterling s3;
    s3.pens= s1.pens + s2.pens;
    s3.shillings = 0;
    if (s3.pens >= 12)
       {
       s3.pens -= 12;
       s3.shillings++;     
       }     
     
    s3.shillings = s3.shillings + s1.shillings + s2.shillings;
    s3.pounds = 0;
    if (s3.shillings >= 20)
       {
       s3.shillings -= 20;
       s3.pounds++;     
       }
    
    s3.pounds = s3.pounds + s1.pounds + s2.pounds;  
    return s3;
}
//////////////////////////////////////////////////////////////
void vivodZnachenia (sterling s)
{
     cout <<"√С√≥√ђ√ђ√* √ѓ√•√∞√Ґ√ї√µ √§√Ґ√≥√µ √І√*√*√Ј√•√*√®√© √∞√*√Ґ√*√* : "<<endl
     <<"J"<< s.pounds<<"."<<s.shillings<<"."<<s.pens<<endl;
}

√лава 5 ”пражнение є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
#include <iostream>
using namespace std;
char drob;
//////////////////////////////////////////////////////////////
struct fraction
{
       int chis; 
       int znam;
};
//////////////////////////////////////////////////////////////
void fadd(fraction, fraction);
void fsub(fraction, fraction);
void fmul(fraction, fraction);
void fdiv(fraction, fraction);
int main()
{
 fraction drob1, drob2;
 char Operacia, ch;
 do
 {
 cout << "√В√Ґ√•√§√®√≤√• √ѓ√•√∞√Ґ√≥√Њ √§√∞√Ѓ√°√Љ, √Ѓ√ѓ√•√∞√*√ґ√®√Њ √® √Ґ√≤√Ѓ√∞√≥√Њ √§√∞√Ѓ√°√Љ:  "; 
 cin>>drob1.chis>>drob>>drob1.znam>>Operacia>>drob2.chis>>drob>>drob2.znam;
 switch(Operacia)
                 {
  case '/': 
      fdiv(drob1, drob2);                     
  break;  
  
  case '*': 
      fmul(drob1, drob2);    
  break;                   
  
  case '+':
      fadd(drob1, drob2);        
  break;      
  
  case '-':
      fsub(drob1, drob2); 
  break;    
 }
 cout << "\n √Е√є√• √∞√*√І?(y/n):  "; 
 cin>>ch;
         }
         
while (ch != 'n');
system("pause");
return 0;
}
//////////////////////////////////////////////////////////////
void fadd(fraction d1, fraction d2)
{
  fraction d3;    
  d3.chis = (d1.chis*d2.znam+d1.znam*d2.chis);
  d3.znam = (d1.znam*d2.znam);
  cout <<"√Р√•√І√≥√Ђ√Љ√≤√*√≤: "<<d3.chis<<drob<<d3.znam<<endl;        
}
//////////////////////////////////////////////////////////////
void fsub(fraction d1, fraction d2)
{
  fraction d3;    
  d3.chis = (d1.chis*d2.znam-d1.znam*d2.chis);
  d3.znam = (d1.znam*d2.znam);
  cout <<"√Р√•√І√≥√Ђ√Љ√≤√*√≤: "<<d3.chis<<drob<<d3.znam<<endl;      
}
//////////////////////////////////////////////////////////////
void fmul(fraction d1, fraction d2)
{
  fraction d3;    
  d3.chis = (d1.chis*d2.chis);
  d3.znam = (d1.znam*d2.znam);
  cout <<"√Р√•√І√≥√Ђ√Љ√≤√*√≤: "<<d3.chis<<drob<<d3.znam<<endl;     
}
//////////////////////////////////////////////////////////////
void fdiv(fraction d1, fraction d2)
{
  fraction d3;    
  d3.chis = (d1.chis*d2.znam);
  d3.znam = (d1.znam*d2.chis);
  cout <<"√Р√•√І√≥√Ђ√Љ√≤√*√≤: "<<d3.chis<<drob<<d3.znam<<endl;    
}


”пражнени€ 1-3 приведены в книжке, наверное, не стоит их здесь размещать.

√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class employee
{
   private:
       int nomer; 
       float posobie;
   public:
      employee(): nomer(0), posobie(0.0)
      {}
      void get_employee ()
      {
            cout<<"√В√Ґ√•√§√®√≤√• √*√Ѓ√ђ√•√∞: "; cin>>nomer; 
            cout<<"√В√Ґ√•√§√®√≤√• √Ѓ√™√Ђ√*√§: "; cin>>posobie; 
      }
      void show_employee()const
      {cout<<"√Н√Ѓ√ђ√•√∞ √±√Ѓ√≤√∞√≥√§√*√®√™√*: "<<nomer<<" √Ѓ√™√Ђ√*√§: "<<posobie<<endl;}   
};
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
employee x1, x2, x3;
x1.get_employee ();
x2.get_employee ();
x3.get_employee ();
x1.show_employee();
x2.show_employee();
x3.show_employee();
system("pause");
return 0;
}

√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class date
{
   private:
      int day, mons, year;
   public:
      date(): day(0), mons(0), year(0)
      {}
      void get_date ()
      {
      cout<<"√В√Ґ√•√§√®√≤√• √§√•√*√Љ, √ђ√•√±√њ√ґ √® √£√Ѓ√§ √Ґ √і√Ѓ√∞√ђ√*√≤√• \"dd/mm/yy\":"<<endl;
      cout<<"√§√•√*√Љ ";
      cin>>day;
      cout<<"√ђ√•√±√њ√ґ: ";
      cin>>mons;
      cout<<"√£√Ѓ√§: ";
      cin>>year;
      }
      void show_date()const
      {cout << day << "/" << mons << "/" <<year<<endl;} 
};
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
date x1, x2;
x1.get_date();
x2.get_date();
x1.show_date();
x2.show_date();
system("pause");
return 0;
}
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
04.03.2013, 15:44     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #34
√лава 5 ”пражнение є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
using namespace std;
 
//int t;//глобальна€ переменна€
 
void func(int n)
{
    static int t;//статическа€ локальна€ переменна€
    cout <<"‘ункци€ вызывалась ранее " <<t <<" раз." <<endl;
    t++;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    int n;
    start:
    cout <<"¬ведите количество вызовов функции >10: ";
    cin >>n;
    if (n<10) goto start;//должно использоватьс€ не меньше 10 вызовов
    else 
    for(int j=0; j<n; j++)
        func(n);
    system("pause");
    return 0;
}


ƒобавлено через 1 минуту
√лава 5 ”пражнение є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
using namespace std;
 
//int t;//глобальна€ переменна€
 
void func(int n)
{
    static int t;//статическа€ локальна€ переменна€
    if(n>1)
    {
            cout <<"‘ункци€ вызывалась ранее " <<t <<" раз." <<endl;
            t++;
            func(n-1);
    }
    else
    {
        cout <<"‘ункци€ вызывалась ранее " <<t <<" раз." <<endl;
    }
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    int n, m;
    start:
    cout <<"¬ведите количество вызовов функции >10: ";
    cin >>n;
    if (n<10) goto start;//должно использоватьс€ не меньше 10 вызовов
    else 
    func(n);
    system("pause");
    return 0;
}


ƒобавлено через 18 часов 2 минуты
√лава 5 ”пражнение є11
÷итата —ообщение от –ики ѕосмотреть сообщение
C++
1
2
3
sterling vvodZnachenii();
sterling slojenieZnachenii (sterling, sterling);
void vivodZnachenia (sterling);
€ перегруженные функции в данном случае использовал:
C++
1
2
3
Sterling st();
Sterling st(Sterling, Sterling);
void st(Sterling);
ƒобавлено через 1 час 28 минут
√лава 5 ”пражнение є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
using namespace std;
 
////////////////////////////////////
struct faction
{
    int chsl;
    int znam;
};
////////////////////////////////////
 
faction d1, d2, d;
 
faction fadd(faction, faction);
faction fsub(faction, faction);
faction fmul(faction, faction);
faction fdiv(faction, faction);
 
int _tmain(int argc, _TCHAR* argv[])
 {
    setlocale(LC_ALL, "");
    char chO, ch;
    cout <<"¬ведите две дроби и знак операции между ними: ";
    cin>>d1.chsl >>ch >>d1.znam >>chO >>d2.chsl >>ch >>d2.znam;
    switch (chO)
    {
    case '+': fadd(d1, d2);
        break;
    case '-': fsub(d1, d2);
        break;
    case '*': fmul(d1, d2);
        break;
    case '/': fdiv(d1, d2);
        break;
    }
    cout <<"–езультат равен: " <<d.chsl <<ch <<d.znam <<endl;
    system ("pause");
    return 0;
}
 
faction fadd(faction, faction)
{
    d.chsl=d1.chsl*d2.znam+d1.znam*d2.chsl;
    d.znam=d1.znam*d2.znam;
    return d;
}
 
faction fsub(faction, faction)
{
    d.chsl=d1.chsl*d2.znam-d1.znam*d2.chsl;
    d.znam=d1.znam*d2.znam;
    return d;
}
 
faction fmul(faction, faction)
{
    d.chsl=d1.chsl*d2.chsl;
    d.znam=d1.znam*d2.znam;
    return d;
}
 
faction fdiv(faction, faction)
{
    d.chsl=d1.chsl*d2.znam;
    d.znam= d1.znam*d2.chsl;
    return d;
}
–ики
6 / 6 / 1
–егистраци€: 27.02.2013
—ообщений: 23
08.03.2013, 01:36     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #35
√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class date
{
   private:
      int day, mons, year;
   public:
      date(): day(0), mons(0), year(0)
      {}
      void get_date ()
      {
      cout<<"√В√Ґ√•√§√®√≤√• √§√•√*√Љ, √ђ√•√±√њ√ґ √® √£√Ѓ√§ √Ґ √і√Ѓ√∞√ђ√*√≤√• \"dd/mm/yy\":"<<endl;
      cout<<"√§√•√*√Љ ";
      cin>>day;
      cout<<"√ђ√•√±√њ√ґ: ";
      cin>>mons;
      cout<<"√£√Ѓ√§: ";
      cin>>year;
      }
      void show_date()const
      {cout << day << "/" << mons << "/" <<year<<endl;} 
};
////////////////////////////////////////////////////////////////////////////////
class employee
{
   private:
       date D1;
       int nomer; 
       float posobie;
       enum etype {laborer, secretary, manager, accountant, executive, researcher};
       etype temp;
   public:
      employee(): nomer(0), posobie(0.0)
      {}
      void get_employee ();
      void show_employee()const;
};
//------------------------------------------------------------------------------
void employee::get_employee ()
      {
            char letter;
            D1.get_date();
            cout<<"√В√Ґ√•√§√®√≤√• √*√Ѓ√ђ√•√∞: "; cin>>nomer; 
            cout<<"√В√Ґ√•√§√®√≤√• √Ѓ√™√Ђ√*√§: "; cin>>posobie; 
            cout<<"√В√Ґ√•√§√®√≤√• √ѓ√•√∞√Ґ√≥√Њ √°√≥√™√Ґ√≥ √§√Ѓ√Ђ√¶√*√Ѓ√±√≤√® "<<endl
            <<"(laborer, secretary, manager, accoutant, executive, researcher):";
            cin >> letter;
            switch(letter)
        {       
                case 'l': temp = laborer; break;
                case 's': temp = secretary; break;
                case 'm': temp = manager; break;
                case 'a': temp = accountant; break;
                case 'e': temp = executive; break;
                case 'r': temp = researcher; break;
        }
      }
//------------------------------------------------------------------------------      
void employee::show_employee()const
      {
       cout << "\n√Д√*√≤√* √ѓ√∞√®√•√ђ√* √*√* √∞√*√°√Ѓ√≤√≥: ";
       D1.show_date();
       cout<<"√Н√Ѓ√ђ√•√∞ √±√Ѓ√≤√∞√≥√§√*√®√™√*: "<<nomer
       <<"\n√О√™√Ђ√*√§: "<<posobie<<"\n√Д√Ѓ√Ђ√¶√*√Ѓ√±√≤√Љ: ";
       switch(temp)
        {       
                case 0: cout << "laborer" << endl; break;
                case 1: cout <<  "secretary" << endl; break;
                case 2: cout << "manager" << endl; break;
                case 3: cout <<  "accountant" << endl; break;
                case 4: cout << "executive" << endl; break;
                case 5: cout <<  "researcher" << endl; break;
        }
       }    
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
employee x1, x2;
x1.get_employee ();
x1.show_employee();
system("pause");
return 0;
}

ќх и напарилс€ с этой фиговиной, в особенности с enum.

√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class angle
{
   private:
      int grad;
      float min;
      char direct;
   public:
      angle(): grad(0), min(0.0)
      {}
      angle(int g, float m, char d): grad(g), min(m), direct(d)
      {}
      void get_angle ()
      {
      cout<<"√В√Ґ√•√§√®√≤√• √™√Ѓ√Ѓ√∞√§√®√*√*√≤√ї."<<endl;
      cout<<"√Г√∞√*√§√≥√±√ї: ";
      cin>>grad;
      cout<<"√М√®√*√≥√≤√ї: ";
      cin>>min;
      cout<<"√Н√*√ѓ√∞√*√Ґ√Ђ√•√*√®√• (N, S, E, W): ";
      cin>>direct;
      }
      void show_angle()const
      {cout << grad << '∞' << min << "' " <<direct<<endl;}  
};
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
angle A1(100, 56.8, 'E');
A1.show_angle();
char n;
do
{
    A1.get_angle();
    A1.show_angle();
    cout<<"\n√Е√є√• √∞√*√І?(y/n): ";
    cin>>n;        
}
while (n !='n');
system("pause");
return 0;
}


√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class podscet
{
   private:
      int nomer;
      static int vsego;
   public:
      podscet()
        {vsego++; nomer = vsego;}
      int getpodscet ()
        {return  vsego;}
      void show_podscet()const
        {
            cout << "√М√Ѓ√© √ѓ√Ѓ√∞√њ√§√™√Ѓ√Ґ√ї√© √*√Ѓ√ђ√•√∞: " <<nomer<<endl;
            cout << "√В√±√•√£√Ѓ √Ѓ√°√Ї√•√™√≤√Ѓ√Ґ: " <<vsego<<endl;
        }   
};
//------------------------------------------------------------------------------
int podscet::vsego = 0;
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
podscet p1, p2, p3;
p1.show_podscet();
p2.show_podscet();
p3.show_podscet();
system("pause");
return 0;
}

√лава 6 ”пражнение є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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class fraction
{
   private:
      int chis, znam;
   public:
      fraction(): chis(0), znam(0)
        {}
     void set_drobi ()
        {
            char drob; 
            cout<< "√В√Ґ√•√§√®√≤√• √І√*√*√Ј√•√*√®√• √§√∞√Ѓ√°√® √Ґ √і√Ѓ√∞√ђ√*√≤√• x/y: "<<endl;
            cin>>chis>>drob>>znam;
        }
      void show_drobi()const
        {
            cout<< "√Р√•√І√≥√Ђ√Љ√≤√*√≤  "<< chis<<"/"<<znam<<endl;
        }
      void add_drobi (fraction, fraction);      
};
//------------------------------------------------------------------------------
void fraction::add_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam+d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);  
    }
    
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
fraction d1, d2, d3;  
char ch;  
do
    {
       d1.set_drobi ();
       d2.set_drobi ();
       d3.add_drobi (d1,d2);
       d3.show_drobi();
       cout << "\n √Е√є√• √∞√*√І?(y/n):  "; 
       cin>>ch;
    }        
while (ch != 'n');
system("pause");
return 0;
}

√лава 6 ”пражнение є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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class angle
{
   private:
      int grad;
      float min;
      char direct;
   public:
      angle(): grad(0), min(0.0)
      {}
      angle(int g, float m, char d): grad(g), min(m), direct(d)
      {}
      void set_angle ()
      {
      cout<<"√В√Ґ√•√§√®√≤√• √™√Ѓ√Ѓ√∞√§√®√*√*√≤√ї."<<endl;
      cout<<"√Г√∞√*√§√≥√±√ї: ";
      cin>>grad;
      cout<<"√М√®√*√≥√≤√ї: ";
      cin>>min;
      cout<<"√Н√*√ѓ√∞√*√Ґ√Ђ√•√*√®√• (N, S, E, W): ";
      cin>>direct;
      }
      void show_angle()const
      {cout << grad << '∞' << min << "' " <<direct<<endl;}  
};
////////////////////////////////////////////////////////////////////////////////
class ship
{
   private:
      angle shirota, dolgota;
      int nomer;
      static int vsego;
   public:
      ship()
        {vsego++; nomer = vsego;}
      void set_ship ();
      void show_ship ()const;
        
};
//------------------------------------------------------------------------------
int ship::vsego = 0;
//------------------------------------------------------------------------------
void ship::set_ship ()
    {
        cout<<"√Ш√®√∞√Ѓ√≤√*: "; shirota.set_angle();
        cout<<"√Д√Ѓ√Ђ√£√Ѓ√≤√*: "; dolgota.set_angle();
    }
//------------------------------------------------------------------------------
void ship::show_ship()const
    {
        cout << "√П√Ѓ√∞√њ√§√™√Ѓ√Ґ√ї√© √*√Ѓ√ђ√•√∞ √™√Ѓ√∞√*√°√Ђ√њ: " <<nomer<<endl;
        cout << "√К√Ѓ√Ѓ√∞√§√®√*√*√≤√ї." <<endl;
        cout << "√Ш√®√∞√Ѓ√≤√*: "; shirota.show_angle();
        cout << "√Д√Ѓ√Ђ√£√Ѓ√≤√*: "; dolgota.show_angle();
    }   
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
ship s1, s2, s3;
s1.set_ship ();
s2.set_ship ();
s1.show_ship();
s2.show_ship();
system("pause");
return 0;
}

√лава 6 ”пражнение є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
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
#include <iostream>
#include<cmath>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class fraction
{
   private:
      int chis, znam;
   public:
      fraction(): chis(0), znam(0)
        {}
     void set_drobi ()
        {
            char drob; 
            cout<< "√В√Ґ√•√§√®√≤√• √І√*√*√Ј√•√*√®√• √§√∞√Ѓ√°√® √Ґ √і√Ѓ√∞√ђ√*√≤√• x/y: "<<endl;
            cin>>chis>>drob>>znam;
        }
      void show_drobi()const
        {
            cout<< "√Р√•√І√≥√Ђ√Љ√≤√*√≤  "<< chis<<"/"<<znam<<endl;
        }
      void add_drobi(fraction, fraction);  
      void sub_drobi(fraction, fraction);
      void mul_drobi(fraction, fraction);
      void div_drobi(fraction, fraction);
      void lowterms (); 
};
//------------------------------------------------------------------------------
void fraction::add_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam+d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);  
    }
//------------------------------------------------------------------------------
void fraction::sub_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam-d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);
    }
//------------------------------------------------------------------------------
void fraction::mul_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.chis);
        znam = (d1.znam*d2.znam);
    }
//------------------------------------------------------------------------------
    void fraction::div_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam);
        znam = (d1.znam*d2.chis);
    }
//------------------------------------------------------------------------------
    void fraction::lowterms ()
    {
        long tchis, tznam, temp, gcd;
        tchis = labs(chis);
        tznam = labs(znam);
        if (tznam == 0)
            { cout<<"√Н√•√§√Ѓ√ѓ√≥√±√≤√®√ђ√ї√© √І√*√*√ђ√•√*√*√≤√•√Ђ√Љ!"; exit(1);}
        else if (tchis == 0)
            { chis = 0; znam = 1; return;}
        while(tchis !=0)
            {
                if(tchis < tznam)
                    {temp = tchis; tchis = tznam; tznam = temp;}
                tchis = tchis - tznam;
            }
        gcd = tznam;
        chis = chis/gcd;
        znam = znam/gcd;
    }
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
fraction d1, d2, d3;  
char ch;  
do
    {
       char operacia; 
       d1.set_drobi ();
       cout<< "√В√Ґ√•√§√®√≤√• √Ѓ√ѓ√•√∞√*√ґ√®√Њ: *,/,+,-."<<endl;
       cin>>operacia;
       d2.set_drobi ();
       switch(operacia)
       {
            case '/': d3.div_drobi (d1,d2); d3.lowterms(); d3.show_drobi(); break;  
            case '*': d3.mul_drobi (d1,d2); d3.lowterms(); d3.show_drobi(); break;                   
            case '+': d3.add_drobi (d1,d2); d3.lowterms(); d3.show_drobi(); break;      
            case '-': d3.sub_drobi (d1,d2); d3.lowterms(); d3.show_drobi(); break;    
        }
       cout << "\n √Е√є√• √∞√*√І?(y/n):  "; 
       cin>>ch;
    }        
while (ch != 'n');
system("pause");
return 0;
}

√лава 6 ”пражнение є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
127
128
129
130
#include <iostream>
#include<cmath>
#include<iomanip>
using namespace std;
void starline();
////////////////////////////////////////////////////////////////////////////////
class fraction
{
   private:
      int chis, znam;
   public:
      fraction(): chis(0), znam(0)
        {}
      fraction(int c, int z): chis(c), znam(z)
        {}  
     void set_drobi ()
        {
            char drob; 
            cout<< "√В√Ґ√•√§√®√≤√• √І√*√*√Ј√•√*√®√• √§√∞√Ѓ√°√® √Ґ √і√Ѓ√∞√ђ√*√≤√• x/y: "<<endl;
            cin>>chis>>drob>>znam;
        }
      void show_drobi()const
        {
            cout<< "√Р√•√І√≥√Ђ√Љ√≤√*√≤  "<< chis<<"/"<<znam<<endl;
        }
      void add_drobi(fraction, fraction);  
      void sub_drobi(fraction, fraction);
      void mul_drobi(fraction, fraction);
      void div_drobi(fraction, fraction);
      void lowterms (); 
      void set_znam ();
      void show_drobiVtablice()const;
      void show_drobiShapka()const;
};
//------------------------------------------------------------------------------
void fraction::add_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam+d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);  
    }
//------------------------------------------------------------------------------
void fraction::sub_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam-d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);
    }
//------------------------------------------------------------------------------
void fraction::mul_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.chis);
        znam = (d1.znam*d2.znam);
    }
//------------------------------------------------------------------------------
    void fraction::div_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam);
        znam = (d1.znam*d2.chis);
    }
//------------------------------------------------------------------------------
    void fraction::lowterms ()
    {
        long tchis, tznam, temp, gcd;
        tchis = labs(chis);
        tznam = labs(znam);
        if (tznam == 0)
            { cout<<"√Н√•√§√Ѓ√ѓ√≥√±√≤√®√ђ√ї√© √І√*√*√ђ√•√*√*√≤√•√Ђ√Љ!"; exit(1);}
        else if (tchis == 0)
            { chis = 0; znam = 1; return;}
        while(tchis !=0)
            {
                if(tchis < tznam)
                    {temp = tchis; tchis = tznam; tznam = temp;}
                tchis = tchis - tznam;
            }
        gcd = tznam;
        chis = chis/gcd;
        znam = znam/gcd;
    }
//------------------------------------------------------------------------------   
void fraction::show_drobiVtablice()const
    {
        cout<<setiosflags(ios::left)<<setw(1)<<chis<<setw(1)<<"/"<<setw(3)<<znam;
    }
//------------------------------------------------------------------------------    
        void fraction::set_znam ()
        {
            char drob; 
            fraction temp, temp2, rezult;
            cout<< "√В√Ґ√•√§√®√≤√• √І√*√*√ђ√•√*√*√≤√•√Ђ√Љ: "<<endl;
            cin>> temp.znam;
            cout<< "     ";
            for (int x = 1; x<temp.znam; x++)
            {
                temp.chis = x;
                temp.show_drobiVtablice();
                temp2.znam=temp.znam;
            } 
            cout<< endl;  
            starline(); 
            for (int x = 1; x<temp.znam; x++)
            {
                temp.chis = x;
                temp.show_drobiVtablice();
                temp2.znam=temp.znam;
                for (int x2 = 1; x2<temp2.znam; x2++)
                {
                    temp2.chis = x2;
                    rezult.mul_drobi (temp, temp2);
                    rezult.lowterms();
                    rezult.show_drobiVtablice();
                }
                cout<< endl;
            }   
        }    
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
fraction d1;  
d1.set_znam ();
system("pause");
return 0;
}
//------------------------------------------------------------------------------
void starline()
{
    for(int j=0; j<30; j++)
    cout<<'*';
    cout<<endl;
}

¬ 12-м задании немного не пон€л формулировку: "—оздайте новую программу, котора€ будет включать класс fraction, созданный в упражнении 11. ". Ќамекают на включении этого класса через заголовочный файл (include "11.h")?
¬ общем, € просто скопировал данный класс в 12-е задание, и добавил несколько функций ничего не удал€€.

ƒобавлено через 5 минут
÷итата —ообщение от Kins ѕосмотреть сообщение
√лава 5 ”пражнение є10 цикл
€ перегруженные функции в данном случае использовал:
C++
1
2
3
Sterling st();
Sterling st(Sterling, Sterling);
void st(Sterling);
ƒаже не знаю, наверное так будет лучше. Ќе берусь судить.
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
11.03.2013, 18:40     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #36
√лава 6 ”пражнение є5
там дату надо типа 12/31/02, тоесть ипользовать символьную переменную дл€ разделени€ чисел при вводе и соответственно при выводе, но это не столь важно конечно.)
мо€ верси€ public:
 ликните здесь дл€ просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
public:
    char ch;
    date(){month=0, day=0, year=0;}
    void getdate()
    {
        cout <<"¬ведите дату формата мм/дд/гггг: ";
        cin >>month >>ch >>day >>ch >>year;
    }
    void showdate()const
    {cout <<"¬ведена дата: " <<month <<ch <<day <<ch <<year <<endl;}


ƒобавлено через 4 часа 35 минут
√лава 6 ”пражнение є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
////////////////////////////////////////////////////////////////
enum etype {laborer, secretary, manager, accountant, executive, researcher};
////////////////////////////////////////////////////////////////
class date
{public:int month, day, year;};
////////////////////////////////////////////////////////////////
class employee
{
private:
    int number;
    float cash;
    date dat;
    etype prof;
public:
    char ch, chp, sm;
    employee(){number=0, cash=0, dat.month=0, dat.day=0, dat.year=0;}
    void getemploy()
    {
        cout <<"¬ведите номер сотрудника и его оклад: "; cin >>number >>cash;
        cout <<"¬ведите дату приема сотрудника вида \"мм/дд/гггг\": "; cin >>dat.month >>ch >>dat.day >>ch >>dat.year; 
        cout <<"¬ведите первую букву названи€ профессии (l, s, m, a, e, r)"; cin >>chp;
        switch(chp)
        {
        case 'l': sm=laborer; break;
        case 's': sm=secretary; break;
        case 'm': sm=manager; break;
        case 'a': sm=accountant; break;
        case 'e': sm=executive; break;
        case 'r': sm=researcher; break;
        }
    }
    void putmploy()
    {
        cout <<"–аботник є " <<number <<" професси€ ";
        switch(sm)
        {
        case 0: cout <<"laborer"; break;
        case 1: cout <<"secretary"; break;
        case 2: cout <<"manager"; break;
        case 3: cout <<"accountant"; break;
        case 4: cout <<"executive"; break;
        case 5: cout <<"researcher"; break;
        }   
        cout <<",\nприн€т на работу " <<dat.month <<ch <<dat.day <<ch <<dat.year    <<", получает оклад: " <<cash <<endl;
    }
};
/////////////////////////////////////////////////////////////////
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    employee a1, a2, a3;
    a1.getemploy();
    a2.getemploy();
    a3.getemploy();
    a1.putmploy();
    a2.putmploy();
    a3.putmploy();
    system("pause");



÷итата —ообщение от –ики ѕосмотреть сообщение
ќх и напарилс€ с этой фиговиной, в особенности с enum.
enum ерунда) € напарилс€ с доступом к пол€м класса date
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
14.03.2013, 11:01     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #37
÷итата —ообщение от –ики ѕосмотреть сообщение
cout<< "–езультат *"<< chis<<"/"<<znam<<endl;
¬о всех задани€х с дроб€ми так.) ћожно же присвоить static символьной переменной.

ƒобавлено через 22 часа 33 минуты
÷итата —ообщение от –ики ѕосмотреть сообщение
Ќамекают на включении этого класса через заголовочный файл (include "11.h")?
 ликните здесь дл€ просмотра всего текста

fraction.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
//---------------------------------------------------------------
#ifndef MY_SYMBOL_H
#define MY_SYMBOL_H
#include <iostream>
/////////////////////////////////////////////////////////////////
class fraction
{
private:
    int chsl;
    int znam;
public:
    fraction(): chsl(0), znam(0) {}
    static char sl;
 
//----------------------------------------------------------------
//================================================================
    void lowterms();
//================================================================
    void get_zn();
    void zapoln_stolb();
};
/////////////////////////////////////////////////////////////////
#endif //MY_SYMBOL_H
fraction.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
#include "fraction.h"
#include "stdafx.h"
 
using namespace std;
 
int zn;
 
/////////////////////////=====================///////////////////////////
void fraction::get_zn()
{
        cout <<"¬ведите знаменатель: "; cin >>znam;
        zapoln_stolb();
}
/////////////////////////////////////////////////////////////////////////
void fraction::zapoln_stolb()
    {
        for(int strok=0; strok<znam; strok++)
        {     
            for(int stolb=0; stolb<znam; stolb++)
            {
                if(stolb==0 && strok==0)cout <<"    ";
                if(stolb==0 && strok!=0){zn=znam; chsl=strok; lowterms();}
                if(stolb!=0 && strok==0){zn=znam; chsl=stolb; lowterms();}
                if(stolb!=0 && strok!=0){zn=znam*znam; chsl=stolb*strok; lowterms();}//вывод таблицы
            }
            cout <<endl;
        }
    }
/////////////////////////////////////////////////////////////////////////
void fraction::lowterms()
    {
        long tnum, tden, temp, gcd;
        tnum=labs(chsl);//используем неотрицательные
        tden=labs(zn);//значени€
        if(tden==0){cout<<"Ќедопустимый знаменатель!"; exit(1);}//проверка знаменател€ на 0
        else if(tnum==0){chsl=0; zn=1; return;}//проверка числител€ на 0
        //нахождение наибольшего общего делител€
        while(tnum!=0)
        {
            if(tnum<tden){temp=tnum; tnum=tden; tden=temp;}//если числитель больше знаменател€, мен€ем их местами
            tnum-=tden;//вычитание
        }
        gcd=tden;//делим числитель и знаменатель на
        chsl/=gcd;//полученый наибольший общий делитель
        zn/=gcd;
        cout <<chsl <<sl <<zn <<" ";
    }
/////////////////////////////////////////////////////////////////////////
    char fraction::sl='/';
//=======================================================================
upr6-12
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "fraction.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "");
    fraction f;
    f.get_zn();
    system("pause");
    return 0;
}


ƒобавлено через 13 часов 17 минут

p.s.подсократил код)
IvanInanovich
0 / 0 / 0
–егистраци€: 03.01.2013
—ообщений: 113
19.03.2013, 18:44     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #38
√лава 6 ”пражнение є11
–еб€т, подскажите в формуле которую предоставил автор, есть 2 строки :
C++
1
2
tnum = labs(num); // используем не отрицательные 
 tden = labs(den); // значени€ (нужен cmath)
подключаю cmath но функцию labs() компил€тор не видет. пробовал fabs() в этом случае выбивает ошибку: undefined reference to `WinMain@16'|
у вас такого не было?
Kins
59 / 58 / 6
–егистраци€: 03.02.2013
—ообщений: 167
19.03.2013, 18:50     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #39
÷итата —ообщение от IvanInanovich ѕосмотреть сообщение
у вас такого не было?
я не подключал cmath, все само нормально вз€лось. ёзаю VS12

вот что было у мен€:
C++
1
2
3
#include "stdafx.h"
#include <iostream>
#include <clocale>
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
19.03.2013, 21:22     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++"
≈ще ссылки по теме:
C++ ќбъектно-ориентированное программирование C++
ќбъектно-ориентированное программирование C++
C++ ќбъектно-ориентированное программирование в —++ ?
C++ ќбъектно ориентированное программирование.
C++ ќбъектно-ориентированное программирование

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

»ли воспользуйтесь поиском по форуму:
IvanInanovich
0 / 0 / 0
–егистраци€: 03.01.2013
—ообщений: 113
19.03.2013, 21:22     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++" #40
¬ той программе разобралс€. Ќо следующее условие мен€ ужаснуло (глава 6, задание 12) ќ.ќ
2 часа пыталс€ разобратьс€ и никак. –азобрал ваш код реб€т.  од пон€л. Ќо суть задани€ так и осталась дл€ мен€ загадкой ћожет вы сможете объ€снить ? ≈сли не затруднит конечно. ћозг взрываетс€ уже просто))
Yandex
ќбъ€влени€
19.03.2013, 21:22     –ешение всех упражнений из книги –. Ћафоре "ќбъектно-ориентированное программирование в —++"
ќтвет —оздать тему
ќпции темы

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