Как исправить ошибку компилятора DevCC: [Ошибка] ожидал неквалифицированный идентификатор перед «если»? - PullRequest
0 голосов
/ 24 мая 2019

Я правильно делаю проблему с домашним заданием и мне нужна помощь, чтобы выяснить, как решить ошибку компилятора: [Error] ожидал unqualified-id перед 'if'.

Я пытался включить функции в основную функцию int, но это приводит к большему количеству ошибок. Я пытался найти отсутствующие фигурные скобки, но, похоже, не могу их найти.

"if (surge! = 'Y')" - это то место, где я получаю [Error] ожидаемый безусловный идентификатор перед 'if'.

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

using namespace std;

double calcFare (double perMinute, double lengthMinutes, double minuteFare, double perMile, double distanceMiles, double mileFare, double baseFare, double totalFare, char carClass);
double calcFareSurge (double surgeFare, double perMinute, double lengthMinutes, double minuteFare, double perMile, double distanceMiles, double mileFare, double baseFare, double totalFare, double surgeMultiplier, char carClass);
double test;
void output (string name, double totalFare);

int main()
{
    string name;
    double surgeFare, perMinute, lengthMinutes, minuteFare, perMile, distanceMiles, mileFare, surgeMultiplier, baseFare, totalFare;
    char surge, carClass;

    cout << "Enter name: " << endl;
    getline(cin, name);
    cout << "Enter time in minutes: " << endl;
    cin >> lengthMinutes;
    cout << "Enter distance in miles: " << endl;
    cin >> distanceMiles;
    cout << "Enter 'X' for uberX or 'S' for SUV or 'L' for luxury: " << endl;
    cin >> carClass;
    carClass = (char) toupper(carClass);
    cout << "Enter 'Y' if surge or 'N' if not: " << endl;
    cin >> surge;
    surge = (char) toupper(surge);

    if (surge == 'Y')
    {
        cout << "Enter surge multiplier: " << endl;
        cin >> surgeMultiplier;
    }

    totalFare = calcFare(perMinute, lengthMinutes, minuteFare, perMile, distanceMiles, mileFare, baseFare, totalFare, carClass);

    output(name, totalFare);

    system ("pause");
    return 0;
}

    if (surge != 'Y')
    {
        double calcFare (double perMinute, double lengthMinutes, double minuteFare, double perMile, double distanceMiles, double mileFare, double baseFare, double totalFare, char carClass)
        {       
            if (carClass == 'X')
            {       
                baseFare = 2.00;
                perMinute = 0.22;
                perMile = 1.15;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;
            }
            else if (carClass == 'S')
            {   
                baseFare = 15.00;
                perMinute = 0.90;
                perMile = 3.75;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;   
            }
            else if (carClass == 'L')
            {
                baseFare = 5.00;
                perMinute = 0.50;
                perMile = 2.75;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;
            }   
        }
    else
    {
        double calcFareSurge (double surgeFare, double perMinute, double lengthMinutes, double minuteFare, double perMile, double distanceMiles, double mileFare, double baseFare, double totalFare, double surgeMultiplier, char carClass)
        {
            if (carClass == 'X')
            {   
                baseFare = 2.00;
                perMinute = 0.22;
                perMile = 1.15;
                surgeFare = baseFare * surgeMultiplier;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;
            }
            else if (carClass == 'S')
            {   
                baseFare = 15.00;
                perMinute = 0.90;
                perMile = 3.75;
                surgeFare = baseFare * surgeMultiplier;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;
            }
            else if (carClass == 'L')
            {
                baseFare = 5.00;
                perMinute = 0.50;
                perMile = 2.75;
                surgeFare = baseFare * surgeMultiplier;
                minuteFare = perMinute * lengthMinutes;
                mileFare = perMile * distanceMiles;
                totalFare = minuteFare + mileFare + baseFare;
            }
        }
    }

    void output(string name, double totalFare)     
    {
        cout << setprecision(2) << fixed;
        cout << "Rider's name: " << name << endl;
        cout << "Total: $ " << totalFare << endl;
        return;
    }

1 Ответ

0 голосов
/ 24 мая 2019
if (surge != 'Y')
    {.........
     .......
}

Вышеупомянутый сегмент кода необходимо поместить в отдельную функцию или внутри main ().

(a) Если вы переместите это внутрь основной функции, вы все равно получите другуюошибка, так как вы определили double calcFare (), внутри if и else вы можете вызывать функцию только изнутри if -else, а не из определения функции, в обоих случаях вам придется определять функцию вне if и else.

(b) Вы можете создать новую функцию и соответственно обрабатывать случаи.


Рекомендуемое чтение

(-) Разница между вызовом функции и определением функции.

(-) Возвращает значение из вызова функции

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...