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

Непонятки с плавающей точкой - C++

Восстановить пароль Регистрация
 
Chiter91
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 8
30.03.2014, 18:35     Непонятки с плавающей точкой #1
Обучаюсь С++ по книге Дейтелов. Работаю в IDE Dev-c++ v4.9.9.2
в четвертой главе есть вот такое вот упражнение:
Кликните здесь для просмотра всего текста
4.16. Разработайте программу на C++, которая должна определять заработную плату
для каждого из нескольких служащих. Компания выплачивает каждому
служащему повременную зарплату за первые 40 часов работы и выплачивает в
полуторном размере за сверхурочные свыше 40 часов. Вам дан список сотрудников
компании, число часов, отработанных каждым за последнюю неделю, и
почасовая ставка каждого сотрудника. Программа должна ввести эти данные для
каждого сотрудника, рассчитать и вывести на экран его суммарную зарплату.

Написал вот такую вот программку:
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
#include<iostream>
using std::cin;
using std::cout;
using std::fixed;
 
#include<iomanip>
using std::setprecision;
 
int main()
{ setlocale(LC_ALL, "Russian");
   int chas;
   double stavka;
   double zp;
   
   cout << "Введите число рабочих часов (-1, если ввод закончен): ";
   cin >> chas;
   
   while ( chas != -1 )
   {
      cout << "Введите почасовую ставку работника ($00.00): ";
      cin >> stavka;
      
      if ( chas <= 40 )
      {
        zp = chas * stavka;
        cout << "Зарплата: $" << zp << setprecision (2) << fixed;
      }      
      else
      {
         zp = 40 * stavka + (chas - 40) * (1.5 * stavka);
         cout << "Зарплата: $" << zp << setprecision (2) << fixed;
      }
      
      cout << "\n\nВведите число рабочих часов (-1, если ввод закончен): ";
      cin >> chas;
   }
   
   system ("pause");
   return 0;
}
На первый взгляд программа работает правильно, НО при первом выводе зарплаты число выводится типа int, а в последующие выводы типа double с двумя знаками после запятой, т.е. как нужно по условию.
Скрин консоли прилагаю.

Умы С++ помогите разобраться )
Миниатюры
Непонятки с плавающей точкой  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 18:35     Непонятки с плавающей точкой
Посмотрите здесь:

C++ Рандом с плавающей точкой, как?
Разделитель в числах с плавающей точкой C++
Усечение числа с плавающей точкой C++
Точность числа с плавающей точкой C++
Не выводится число с плавающей точкой C++
Форматирование чисел с плавающей точкой C++
калькулятор чисел с плавающей точкой C++
C++ Сравнение чисел с плавающей точкой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
30.03.2014, 18:42     Непонятки с плавающей точкой #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вывод идет слева-направо. Поэтому надо сначала манипуляторы.
C++
1
cout << "Зарплата: $" << setprecision (2) << fixed<< zp;
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
30.03.2014, 18:43     Непонятки с плавающей точкой #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Chiter91 Посмотреть сообщение
cout << "Зарплата: $" << zp << setprecision (2) << fixed;
сначала ты выводишь значения, а потом настраиваешь строку
поменяй местами
C++
1
cout << "Зарплата: $"  << setprecision (2) << fixed<< zp;
Yandex
Объявления
30.03.2014, 18:43     Непонятки с плавающей точкой
Ответ Создать тему
Опции темы

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