2016-06-30 2 views
-1

Я работаю над этим заданием более 4 часов, и он должен быть через 2 часа, и я просто возвращаюсь обратно. Я на самом деле выдал первый год правильно, но все остальные годы не было. Я работаю над этим настолько, что я даже не могу заставить его работать сейчас, я просто получаю ошибки.do-while петли годового прироста

Клуб здоровья в настоящее время взимает 250 долларов в год за членство. Он объявил, что он увеличит членский взнос на 2% каждый год в течение следующих 7 лет.

Напишите программу, которая использует цикл do-while для отображения текущей скорости, а затем прогнозируемых ставок на следующие 7 лет. Начало в году = 0, что означает текущий год. Следующим должен быть дисплей. Подсказка 1. Создайте двойную переменную плату и инициализируйте ее с помощью первого года членства. Внутри цикла обновите плату, добавив к нему 2%. Подсказка 2. Используйте параметры заголовка, setprecision (2), fixed и setw().

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 


int main() 
{ 
    const string ID = "Matthew Valdez - CS1361-D10 - Assignment 25"; 
    double membership, 
     years = 1, 
     initialMembership = 250.50, 
     membershipIncrease = .02; 


    cout << ID << endl << endl; 
    cout << "Year Charges" << endl; 
    cout << "------------" << endl; 
    { 
     cout << setprecision(2) << fixed; 
     cout << left << setw(5) << "0" << initialMembership << right << setw(5) << endl; 
    } 
    do 
    { 
     cout << left << setw(5) << years++ << initialMembership *= membershipIncrease << right << setw(5) << endl; 
    } while (years < 8); 
    return 0; 

} 

Ошибки я получаю это выражение должно иметь целостный или unscope перечислимого типа и < <: нелегальный левый операнд имеет типа «двойной»

ответ

0

Вы работаете с проблемами из-за приоритет операторов.

Поскольку << имеет более высокий приоритет, чем *=, линия

cout << left << setw(5) << years++ << initialMembership *= membershipIncrease << right << setw(5) << endl; 

эквивалентно

(cout << left << setw(5) << years++ << initialMembership) *= (membershipIncrease << right << setw(5) << endl); 

которое далеко от того, что вы намеревались сделать.

Сделайте свой код проще, разделив это заявление на два.

initialMembership *= membershipIncrease; 
cout << left << setw(5) << years++ << initialMembership << right << setw(5) << endl; 

Это личные предпочтения, но вам не нужно увеличивать year в одной и той же линии. Вы можете использовать:

initialMembership *= membershipIncrease; 
cout << left << setw(5) << years << initialMembership << right << setw(5) << endl; 
++years; 
+0

Большое вам спасибо. У меня было неправильное вычисление, но я смог исправить это после того, что вы сказали. \t \t \t } \t сделать \t { \t \t initialMembership = initialMembership + (initialMembership * membershipIncrease); \t \t cout << left << setw (5) << years << initialMembership << right << setw (5) << endl; \t \t ++ годы; \t} в то время как (лет <8); \t возвращение 0; –