Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/978: Рейтинг темы: голосов - 978, средняя оценка - 4.69
16 / 17 / 0
Регистрация: 01.02.2012
Сообщений: 182
1

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

01.02.2012, 17:47. Показов 191473. Ответов 322
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хотя я и начинающий с++-шник. Хочу помочь другим людям. Здесь я буду выкладывать всё что мне удалось решить. В моих решениях будет много хедеров, делал я это в 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;
}
Это конец второй главы, третюю сделаю позже если будет нужна
 Комментарий модератора 
Пост обновлен по просьбе ТС
13
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2012, 17:47
Ответы с готовыми решениями:

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

Ищу ответы на задания из книги Лафоре Р. "Объектно-ориентированное программирование в С++" 4 издание.
Дошел до 10 главы, из каждой главы делал все 12 заданий, хочу проверить правильно ли я их делал. И...

Роберт Лафоре, "Объектно-ориентированное программирование на C++"
Здравствуйте, хотелось бы узнать мнение по поводу этой книги: стоит ли читать, или поискать другую?

Объектно-ориентированный анализ, Объектно-ориентированное проектирование, Объектно-ориентированное программирование
Моё задание: Система Авиакомпания. Авиакомпания имеет список рейсов. Диспетчер формирует летную...

322
2 / 2 / 0
Регистрация: 10.01.2013
Сообщений: 15
28.01.2013, 14:45 21
Author24 — интернет-сервис помощи студентам
вот мое решение, полностью корректное.

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;
}
1
135 / 22 / 1
Регистрация: 19.10.2012
Сообщений: 42
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
0
59 / 58 / 7
Регистрация: 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");
0
59 / 58 / 7
Регистрация: 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
0
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
15.02.2013, 23:34 25
решения 4й главы нужны?
0
135 / 22 / 1
Регистрация: 19.10.2012
Сообщений: 42
16.02.2013, 22:08 26
Цитата Сообщение от Kins Посмотреть сообщение
решения 4й главы нужны?
Было бы неплохо. (7-е упражнение хочу сверить)
0
59 / 58 / 7
Регистрация: 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");
0
135 / 22 / 1
Регистрация: 19.10.2012
Сообщений: 42
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;
}
0
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
17.02.2013, 12:15 29
Цитата Сообщение от Sabbat Посмотреть сообщение
Я немного ушел от этого когда делал, а так смысл тот же.
Я тоже думал, как циклы сделать, но, так и не надумал). А все оказалось просто.) if (v==1) s1=d
0
9 / 9 / 1
Регистрация: 07.01.2013
Сообщений: 80
17.02.2013, 15:43 30
не понял зачем нужны эти решения если в книге все они есть?!
0
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
17.02.2013, 16:03 31
Цитата Сообщение от ITishnik Посмотреть сообщение
не понял зачем нужны эти решения если в книге все они есть?!
в книге только три- четыре самых простых.
0
59 / 58 / 7
Регистрация: 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;
}
0
6 / 6 / 0
Регистрация: 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;
}
0
59 / 58 / 7
Регистрация: 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;
}
0
6 / 6 / 0
Регистрация: 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);
Даже не знаю, наверное так будет лучше. Не берусь судить.
2
59 / 58 / 7
Регистрация: 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
0
59 / 58 / 7
Регистрация: 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.подсократил код)
0
0 / 0 / 2
Регистрация: 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'|
у вас такого не было?
0
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
19.03.2013, 18:50 39
Цитата Сообщение от IvanInanovich Посмотреть сообщение
у вас такого не было?
Я не подключал cmath, все само нормально взялось. Юзаю VS12

вот что было у меня:
C++
1
2
3
#include "stdafx.h"
#include <iostream>
#include <clocale>
0
0 / 0 / 2
Регистрация: 03.01.2013
Сообщений: 113
19.03.2013, 21:22 40
В той программе разобрался. Но следующее условие меня ужаснуло (глава 6, задание 12) О.О
2 часа пытался разобраться и никак. Разобрал ваш код ребят. Код понял. Но суть задания так и осталась для меня загадкой Может вы сможете объяснить ? Если не затруднит конечно. Мозг взрывается уже просто))
0
19.03.2013, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2013, 21:22
Помогаю со студенческими работами здесь

Ошибки в книги Р.Лафоре "Объектно-Ориентирование программирование в C++"
Добрый день всем присутствующим. Хотелось бы обсудить книгу Robert Lafore Object-Oriented...

Ориентированное программирование в С++ Р. Лафоре
Доброго времени суток форумчане! Хочу вот закинуть себе книгу &quot;Объектно-ориентированное...

Объектно-ориентированное программирование
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть...

Объектно-ориентированное программирование
Друзья, прошу помощи, накопил кучу долгов по учёбе, совершенно нет времени разобраться с задачами,...

Объектно -ориентированное программирование
описать классы используя наследование Пар (масса, удельная теплота парообразования, количество...

Объектно-ориентированное программирование
Добрый вечер, помогите пожалуйста написать программу) Класс прямая(y=ax+b),члены класса...

Объектно-ориентированное программирование
Составить программу для игры в шахматы. Каждая уникальная шахматная фигура выступает в качестве...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru