2015-08-04 4 views
-3

Первый раз постер. Я пишу программу для расчета федерального подоходного налога. Пользователь должен ввести код состояния (1,2,3,4) для представления статуса подачи. Я должен написать функцию для этого, получить налоговый доход, рассчитать сумму налога и отобразить результаты. Я также использую два одномерных массива для ставок налогов и статуса подачи. Написано до сих пор. Любая помощь приветствуется. Почему я получаю ошибки? Как я могу исправить функции и массивы?C++ Help Array and Function

#include <iostream> 
    #include <cmath> 
    #include <iomanip> 
    #include <string> 

    using namespace std; 

    int getStatusCode(); // function declaration 
    float calcTaxAmt(); 
    void displayResults(); 
    float getTaxIncome(); 


    std:int getStatusCode()      // status code function and array 
    { 
    std:string filingStatus[4] = { "Single", "Married Filing Jointly", "Married filing Seperately", "Head of Household" }; 
     bool statusCode = false; 

     do { 
      cout << "Enter your filing status: " << endl; 
      for (int i = 0; i < size(filingStatus); i++;) 
      { 
       cout << "Enter '" << i + 1 << "' for " << filingStatus[i] << "." << endl; 
      } 
      cin >> statusCode; 
      cout << "\nWhen you are finished, please press '9'.\n" << endl; 

      cin >> statusCode = 9; 

      while (statusCode != 9) { 

       while (statusCode < 1 || (statusCode > 4 && statusCode != 9)); 

       if (statusCode != 9) { 
        do { 

         cout << "\nEnter your income for the past year: \n" << endl;       // do while statement to input income 
         cin >> taxableIncome; 

         if (taxableIncome < 500) { 
          cout << "\nYour income is less than $500. You do not owe any taxes.\n" << endl; // message if user's income is less than $500 
         } 

        } while (taxableIncome < 500); 

        return 
        { 

         float calcTaxAmount(int statusCode, float taxableIncome) { 
          float taxAmt; 

          switch (statusCode)                   // switch statement to compute taxes owed 
          { 

          case 1:                      // Filing single 
           if (taxableIncome <= 7550) { 
            taxAmt = (taxableIncome)* (float)(.10); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 7550 && taxableIncome < 30650) { 
            taxAmt = 7550 * (float)(.10) + (taxableIncome - 7550) * (float)(.16); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 30650 && taxableIncome < 74200) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (taxableIncome - 30650) * (float)(.26); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 74200 && taxableIncome < 154800) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (74200 - 30650) * (float)(.26) + (taxableIncome - 74200)* (float)(.30); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 154800 && taxableIncome < 336550) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (74200 - 30650) * (float)(.26) + (154800 - 74200) * (float)(.30) + (taxableIncome - 154800) * (float)(.33); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 336550) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (74200 - 30650) * (float)(.26) + (154800 - 74200) * (float)(.30) + (336550 - 154800) * (float)(.33) + (taxableIncome - 336550)* (float)(.38); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 

           } 


           break; 


          case 2:                      // Married filing jointly 
           if (taxableIncome <= 15100) { 
            taxAmt = (taxableIncome)* (float)(.10); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 15100 && taxableIncome < 61300) { 
            taxAmt = 15100 * (float)(.10) + (taxableIncome - 15100) * (float)(.16); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 61300 && taxableIncome < 123700) { 
            taxAmt = 15100 * (float)(.10) + (61300 - 15100)* (float)(.16) + (taxableIncome - 61300)* (float)(.26); 
            cout << "\nThe amount of taxes you owe is:" << taxAmt << endl; 
           } 
           else if (taxableIncome > 123700 && taxableIncome < 188450) { 
            taxAmt = 15100 * (float)(.10) + (61300 - 15100)* (float)(.16) + (123700 - 61300)*(float)(.26) + (taxableIncome - 123700)* (float)(.30); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 188450 && taxableIncome < 336550) { 
            taxAmt = 15100 * (float)(.10) + (61300 - 15100)* (float)(.16) + (123700 - 61300)*(float)(.26) + (188450 - 123700) + (taxableIncome - 188450)* (float)(.33); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 336550) { 
            taxAmt = 15100 * (float)(.10) + (61300 - 15100)* (float)(.16) + (123700 - 61300)*(float)(.26) + (188450 - 123700) + (336550 - 188450) * (float)(.33) + (taxableIncome - 336550)* (float)(.38); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           break; 


          case 3:                          // Married filing seperately 
           if (taxableIncome <= 7550) { 
            taxAmt = taxableIncome * (float)(.10); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 7550 && taxableIncome < 30650) { 
            taxAmt = 7550 * (float)(.10) + (taxableIncome - 7550) * (float)(.16); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 30650 && taxableIncome < 61850) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (taxableIncome - 30650) * (float)(.26); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 61850 && taxableIncome < 94225) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (61850 - 30650) * (float)(.26) + (taxableIncome - 61850) * (float)(.30); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 94226 && taxableIncome < 168275) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (61850 - 30650) * (float)(.26) + (94226 - 61850) * (float)(.30) + (taxableIncome - 94226) * (float)(.33); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 168276) { 
            taxAmt = 7550 * (float)(.10) + (30650 - 7550) * (float)(.16) + (61850 - 30650) * (float)(.26) + (94226 - 61850) * (float)(.30) + (168276 - 94226) * (float)(.33) + (taxableIncome - 168276)* (float)(.38); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           break; 


          case 4:                        // Head of household 
           if (taxableIncome <= 10750) { 
            taxAmt = taxableIncome * (float)(.10); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 10750 && taxableIncome < 41050) { 
            taxAmt = 10750 * (float)(.10) + (taxableIncome - 10750)* (float)(.16); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 41050 && taxableIncome < 106000) { 
            taxAmt = 10750 * (float)(.10) + (41050 - 10750)* (float)(.16) + (taxableIncome - 41050)* (float)(.26); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 106000 && taxableIncome < 171650) { 
            taxAmt = 10750 * (float)(.10) + (41050 - 10750)* (float)(.16) + (106000 - 41050)* (float)(.26) + (taxableIncome - 106000)* (float)(.30); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 171650 && taxableIncome < 336550) { 
            taxAmt = 10750 * (float)(.10) + (41050 - 10750)* (float)(.16) + (106000 - 41050)* (float)(.26) + (171650 - 106000)* (float)(.30) + (taxableIncome - 171650)* (float)(.33); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           else if (taxableIncome > 336550) { 
            taxAmt = 10750 * (float)(.10) + (41050 - 10750)* (float)(.16) + (106000 - 41050)* (float)(.26) + (171650 - 106000)* (float)(.30) + (336550 - 171650)* (float)(.33) + (taxableIncome - 336550)* (float)(.38); 
            cout << "\nThe amount of taxes you owe is: " << taxAmt << endl; 
           } 
           break; 

          } 

         } 
        } 
        return taxAmt; 

       } 

    int main() { 

     int statusCode;               // variables 
     float taxableIncome; 
     float taxAmt; 
     float taxRate[6] = { .10, .16, .26, .30, .33, .38 }; // tax rate array  

    system("pause"); 
     return 0; 
    } 
+0

Не могли бы вы высказать ошибки, которые вы получаете от кода? Это может помочь выявить возможные ошибки в коде. –

+0

Это коды ошибок, которые я получаю, 1> MSVCRTD.lib (crtexe.obj): ошибка LNK2019: нерешенный внешний символ _main, на который ссылается функция ___tmainCRTStartup : фатальная ошибка LNK1120: 1 неразрешенные внешние ссылки – newbie

+1

Способ записи кода - начать с чем-то маленьким и простым, что отлично работает, а затем добавлять сложность немного за раз, тестирование на каждом шагу и ** никогда не добавлять к коду, который не работает. ** В этом случае у вас есть ошибка связи, поэтому вы должны попробуйте написать что-то простое, что связано с привязкой к библиотеке (или тем, что вы пытаетесь сделать). Маленькие шаги. – Beta

ответ

1

Ошибка, которую вы опубликовали, происходит потому, что компилятор не может найти основную информацию. Это происходит потому, что вы открыли более фигурные скобки, чем вы закрыли. Кроме того, я не буду говорить слишком много о вашем стиле кодирования, но здесь есть еще несколько вещей, которые ужасно неправильно:

std:int getStatusCode() 

Там нет необходимости std: здесь, что бы это должно делать.

std:string 

Это должно быть std :: string, это пространство имен, а не метка goto или что-то в этом роде. Вы даже использовали using namespace std; в начале.

Остальные ошибки, вероятно, происходят, так как вы не закрыли все фигурные скобки. Также обратите внимание, что вы предоставляете декларацию для

void displayResults(); 
float getTaxIncome(); 

, но вы не предоставляете реализацию.

Кроме того, это не имеет никакого смысла, я не знаю, что вы пытаетесь сделать там:

cin >> statusCode = 9; 

Также есть возврат без точки с запятой в строке 46.

while (statusCode < 1 || (statusCode > 4 && statusCode != 9)); 

Этот цикл, а не тело ...

for (int i = 0; i < size(filingStatus); i++;) 

Также нет size функ для массивов, просто используйте 4 вместо этого, это простой массив, и вы знаете размер. И не должно быть точки с запятой после i ++.

Нет смысла искать больше ошибок, начинать с простого проекта и изучать основы C++. Этот код является просто беспорядочным и не должен размещаться в stackoverflow.