Проблема с форматированием в C++ Может кто-нибудь мне помочь?

Я новичок здесь и пытаюсь написать код на C++. У меня проблема с форматированием дня 1 в моей программе, кто-нибудь может мне помочь? Спасибо!

Вот детали назначения.

Для этого задания напишите программу, которая будет подсчитывать, сколько человек заработал бы за конечный (случайный) период времени, если его / ее зарплата является случайной суммой за первый день и продолжает удваиваться каждый день.

Таким образом, если начальная зарплата человека составляет 0,04 доллара, он получит 0,04 доллара за первый день работы, 0,08 доллара за второй день работы, 0,16 доллара за третий день работы и т. Д..... В течение трех дней человек заработал бы $ 0,28.

Если пример будет продолжаться еще несколько дней, человек получит 0,32 долл. США за четвертый день, в общей сложности 1,04 долл. США (0,64 долл. США в виде зарплаты и бонус 0,40 долл. США) за пятый день и 1,28 долл. США за шестой день, что приведет к Итого 2,92 доллара за 6 дней работы.

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()


{

srand(1);

srand(time(0));


    float salary = 0, bonus = 0, totalpay = 0;
    int days = 0, salary2;

salary = rand() % 6 + 1;
salary = salary / 100;
days = rand() % 31;
totalpay = salary;

    cout << "Starting salary: " << salary << endl
         << "Days worked: " << days << endl
         << "************************************" << endl
         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;

    for (int d = 0; d < days; d++)
    {

        cout << "Day " << d + 1 << ":" << '\t'
        << fixed << setprecision(2) << setw(18) << salary << '\t'
        << setw(18)<< (totalpay+bonus) << endl;

        salary *= 2;

        if ((d+1) % 5 == 0)
            bonus = salary * 10;
        else
            bonus = 0.00;

        totalpay += salary;



    }



return 0;        

    enter code here

}

***** Это мой вывод ****

Starting salary: 0.02
Days worked: 20
************************************
                  Daily Salary                 Amount Earned
                          Day 1:                      0.02                    0.
02
Day 2:                0.04                    0.06
Day 3:                0.08                    0.14
Day 4:                0.16                    0.30
Day 5:                0.32                    0.62
Day 6:                0.64                    7.66
Day 7:                1.28                    2.54
Day 8:                2.56                    5.10
Day 9:                5.12                   10.22
Day 10:              10.24                   20.46
Day 11:              20.48                  245.74
Day 12:              40.96                   81.90
Day 13:              81.92                  163.82
Day 14:             163.84                  327.66
Day 15:             327.68                  655.34
Day 16:             655.36                 7864.30
Day 17:            1310.72                 2621.42
Day 18:            2621.44                 5242.86
Day 19:            5242.88                10485.74
Day 20:           10485.76                20971.50

--------------------------------
Process exited after 0.1105 seconds with return value 0
Press any key to continue . . .

2 ответа

Решение

Попробуйте это изменение:

-         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;
+         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << endl;

Последний setw(30) перед endl применяется к следующему фрагменту текста, в вашем случае к "Day " в первой итерации.

В вашем коде...

     << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;

for (int d = 0; d < days; d++)
{
    cout << "Day " << d + 1 << ":" << '\t'

setw(30) прямо перед endl; относится к "Day ", не endl, Вы не можете использовать setw за endl,

Другие вопросы по тегам