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

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

Войти
Регистрация
Восстановить пароль
 
Chiter91
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 8
#1

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

30.03.2014, 18:35. Просмотров 399. Ответов 2
Метки нет (Все метки)

Обучаюсь С++ по книге Дейтелов. Работаю в 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 с двумя знаками после запятой, т.е. как нужно по условию.
Скрин консоли прилагаю.

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

Сравнение чисел с плавающей точкой - C++
Известно, что числа с плавающей точкой нельзя сравнивать с помощью ==. Однако, нет ли исключения из этого правила? Дело вот в чём. Если мы...

Не выводится число с плавающей точкой - C++
Написал прогу #include &lt;iostream&gt; using namespace std; int main() { int b,c,sum=0; cout&lt;&lt;&quot;Enter number of students: &quot;; ...

Массив чисел с плавающей точкой - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;fstream&gt; using namespace std; int main() { float randomDigits_5 {}; ...

Умножения чисел с плавающей точкой - C++
Доброго времени суток,нужна ваша помощь в умножение чисел с плавающей точкой. Суть программы:Умножение чисел в двоичном коде.Первое число...

Усечение числа с плавающей точкой - C++
Доброго времени суток! Собсно сабж. floor(v*1000)/1000 не помогает, обнуляется только несколько знаков после запятой, а остальные...

Калькулятор чисел с плавающей точкой - C++
double calculate(float x, char s, float y); int main() { float x,y; char s; x=y=0; cin&gt;&gt;x&gt;&gt;s&gt;&gt;y;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
30.03.2014, 18:42 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вывод идет слева-направо. Поэтому надо сначала манипуляторы.
C++
1
cout << "Зарплата: $" << setprecision (2) << fixed<< zp;
1
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
30.03.2014, 18:43 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Chiter91 Посмотреть сообщение
cout << "Зарплата: $" << zp << setprecision (2) << fixed;
сначала ты выводишь значения, а потом настраиваешь строку
поменяй местами
C++
1
cout << "Зарплата: $"  << setprecision (2) << fixed<< zp;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 18:43
Привет! Вот еще темы с ответами:

Вывод числа с плавающей точкой - C++
Доброго всем времени суток. Пытаюсь вывести число с плавающей запятой на LCD. long int Eb = 0x5959; char st_Ebf = &quot;&quot;; ...

Переполнение типа с плавающей точкой - C++
Добрый вечер, существует ли понятие переполнение float c UB как полагается?

Точность числа с плавающей точкой - C++
У типа float числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр. Внимание, вопрос!...

Разделитель в числах с плавающей точкой - C++
Здравствуйте, у меня есть интересный вопрос :) Всем известно, что в переменной типа double могут храниться такие числа, как 0.30, но...


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

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

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