С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Kimel
15 / 16 / 0
Регистрация: 01.02.2012
Сообщений: 182
#1

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

01.02.2012, 17:47. Просмотров 91360. Ответов 294
Метки нет (Все метки)

Хотя я и начинающий с++-шник. Хочу помочь другим людям. Здесь я буду выкладывать всё что мне удалось решить. В моих решениях будет много хедеров, делал я это в 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;
}
Это конец второй главы, третюю сделаю позже если будет нужна
 Комментарий модератора 
Пост обновлен по просьбе ТС
12
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" (C++):

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

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

Объектно-ориентированное приложение: "Эмулятор банкомата" - C++
Доброго времени всем! я начал изучать С++ И хотел бы спросить вашей помощи в этом нелёгком труде. Дело в том, что мне нужно сделать...

Разобраться в примерх к книге Лафоре "Обьектно-ориентированое программирование в С++" - C++
Всем доброго времени суток кто читает эту тему. Сегодня, изучая С++ по книге Лафоре &quot;Обьектно-ориентированое программирование в С++&quot; 4-е...

Объектно-ориентированное программирование - C++
Помогите мне отредактировать программу...У меня есть исходники..Склеить нужно.... Класс Данные класса Методы ...

Объектно-ориентированное программирование в С++ ? - C++
Книга Р. Лафоре - Объектно-ориентированное программирование в С++ как вам ?

294
muradasilov
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 5
29.02.2012, 16:37 #16
спасибо за помошь, но у Вас та же проблема, посмотрите пошаговое выполнение программы.
Прилагаю скрин выполнения программы, результат снова не корректный((((
Вот как раз в той строке где отделяется десятичная часть(в моем случае 0.65), и после умножения на 20 по формуле

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

и после

int_shiling = static_cast<int>(shiling),

число 13 становится 12. Разъясните плиз, каким образом????
0
Миниатюры
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"  
muradasilov
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 5
01.03.2012, 13:57 #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
using namespace std;
int main()
{
    char ch;
    do
    {
    
        double s,s1,s2,a,a1,b,b1,c,c1;
        cout<<"Enter first sum in old pounds: ";
        cin>>a>>b>>c;
        cout<<"Enter second sum in old pounds: ";
        cin>>a1>>b1>>c1;
        s1=(a*240+b*12+c)/240;
        s2=(a1*240+b1*12+c1)/240;
        s=s1+s2;
    
/////////////////////////////////////////////////////////////////////   
    
        double p,z,f;
        int y,m,n;
    
            y=static_cast<int>(s);
            z=s-y;                        //old pound, goes to answer;
            f=z*20;
            m=static_cast<int>(f);
            p=f-m;                        //old shillings, goes to answer;
            n=p*12;                       //old penns, goes to answer;  
            cout<<y<<"."<<m<<"."<<n<<endl;
            cout<<"Try again?(y/n):";
            cin>>ch;
    }
    while(ch!='n');
    return 0;
 
}
Заранее извиняюсь за синтаксис.
вот решение задачи 8 главы 3, в ней заключен ответ на задачу 12 главы 2.
Прошу строго не судить, так как в программировании Ваапще новичок!
0
xxbigxl
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 8
04.03.2012, 18:40 #18
Вот отдельно вынес это действие и получается 13.
Я не знаю как это объяснить.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL,"Russian"); // Русский язык 
float new_$, new_pens, shiling;
int funt,  pens, int_shiling;
 
cout << "Вводим число 0.65: ";
cin >> new_pens;
 
shiling = new_pens * 20;
int_shiling = static_cast<int>(shiling); 
       
             
       cout << endl << int_shiling << endl;
       
       system("pause");
       return 0;
}
0
Nicholas
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 00:43 #19
Привет. Такой вопрос, по поводу 11 задания второй главы книгы. Решение правильное, но в твоем коде нет нижнего подчеркивания, как бы оттделения заголовков от данных. Я все не могу решить данную проблему, все мои попытки увенчались неудачей, в итоге я просто прописал строковой константой. Есть другой солюшен. Общим можно поставить эти подчеркивания с помощью манипулятора setfill(). Этот манипулятор принимает в качестве аргумента один символ, допустим в моем случае setfill('.'), который замещает пробелы на незаполненых позициях поля. Мне нужно сделать так чтобы он прирывался сразу после окончания второй строки. Как я не старался его прервать не получаеться, а символ заполняет все пустые пробелы. Вот мой код, как сделать со вторым солюшеном, немогу догнать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//11 task.cpp
#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;
    cout<<"..............................................................."<<endl;
    cout <<setiosflags (ios::left) <<setw(15) << "Петров" <<setw(15) << "Василий" << setw(15) <<"Кленовая 16" << setw(15) << "Санкт-Петербург"<<endl
    <<setw(15)<< "Иванов" <<setw(15) << "Сергей" << setw(15) <<"Осиновая 3" << setw(15) << "Находка"<<endl
    <<setw(15)<< "Сидоров" <<setw(15) << "Иван" << setw(15) <<"Березовая 21" << setw(15) << "Калининград"<<endl;
    
    return 0;
}
Заранее благодарен.
0
Sabbat
135 / 23 / 1
Регистрация: 19.10.2012
Сообщений: 43
28.01.2013, 00:09 #20
to Nicholas
тоже думал, но больше чем
C++
1
cout<<"..............................................................."<<endl;
заменить на
C++
1
cout<<setfill('.')<<setw(4*15)<<'.'<<endl<<setfill(' ');
(в выше написанном коде) так и ничего не додумал.

............................................................................
Интересует задание 5 глава 3
Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n=20; //работает корректно при n%2=0
for (int i=1; i<=n; i++)
    {
        cout<<setw(n/2-i/2);
        if (i%2)
            {
                for(int j=1; j<=i; j++)
                        cout<<'X';
                cout<<endl;
            }
    }
system("pause"); 
return 0;
}
Как правильно сделать с пробелами во втором цикле (в соответствии с указанием в задании)? Я что-то не понимаю. Буду благодарен за любой ответ.
0
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;
}
1
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
0
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");
0
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
0
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.02.2013, 23:34 #25
решения 4й главы нужны?
0
Sabbat
135 / 23 / 1
Регистрация: 19.10.2012
Сообщений: 43
16.02.2013, 22:08 #26
Цитата Сообщение от Kins Посмотреть сообщение
решения 4й главы нужны?
Было бы неплохо. (7-е упражнение хочу сверить)
0
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");
0
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;
}
0
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
17.02.2013, 12:15 #29
Цитата Сообщение от Sabbat Посмотреть сообщение
Я немного ушел от этого когда делал, а так смысл тот же.
Я тоже думал, как циклы сделать, но, так и не надумал). А все оказалось просто.) if (v==1) s1=d
0
ITishnik
7 / 7 / 0
Регистрация: 07.01.2013
Сообщений: 75
17.02.2013, 15:43 #30
не понял зачем нужны эти решения если в книге все они есть?!
0
17.02.2013, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 15:43
Привет! Вот еще темы с ответами:

Объектно ориентированное программирование - C++
Нужно решить задачи. Помогите кому это не сложно, очень нужно. Вот задачи: 1) Создание и редактирование классов. Нужно создать класс...

Объектно-ориентированное программирование - C++
Составить описание класса одномерных массивов строк, каждая строка которых задается длиной и указателем на выделенную для нее память....

Объектно-ориентированное программирование - C++
На основе объектного подхода создать программу которая рассчитывает значения степенных функций y=sqr(x), корень 3, 4, 5 степеней. В...

Объектно ориентированное программирование. - C++
Нужно решить задачи. Помогите кому это не сложно, очень нужно. Вот задачи: 1) Создание и редактирование классов. Нужно создать класс...


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

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

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