ожидается "}" в конце ввода в основной функции моей программы - PullRequest
0 голосов
/ 24 марта 2011

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

Эта программа должнапрочитайте номер телефона и распечатайте его.Если ему предоставлены буквы, то он будет сортировать его по номеру 0-9, как на клавиатуре телефона, после того, как сделает его заглавной буквой.Он также будет возвращать коды ошибок для недопустимых символов и т. Д., Который управляется оператором switch.

Основная функция

Одна из ошибок, которые я получаю, находится на закрывающей скобке последнейстрока:

ожидается '}' в конце ввода

#include <iostream>
#include <cctype>
#include "Read_Dials.h"
#include "To_Digit.h"
#include "Acknowledge_Call.h"

using namespace std;


int main()
{
    char digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8;
    int return_value = 0;

    return_value = int Read_dials(digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8);

    if (return_value != -5)
        break;

        switch(return_value){

            case -1:
            cout << "ERROR - An invalid character was entered. Please try again, only numbers or letters this time." << endl;
                break;
        case -2:
            cout << "ERROR - Phone number cant start with 0." << endl;
                break;
        case -3:
            cout << "ERROR - This isn't the movies, Phone numbers dont start with \" 555 \" here buddy :/" << endl;
                break;
        case -4:
            cout << "ERROR - Please make sure the hyphen is in position 4." << endl;
                break;
            default:
                void Acknowledge_Call(digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8);
        }
return 0;
}

Функция Read_Dials

Нет ошибок в этой функции

int Read_Dials(char &num1, char &num2, char &num3, char &num4, char &num5, char &num6, char &num7, char &num8)
{

#include "To_Digit.h"

int i = 0;

    do{
    i++;
    cout << "Please enter the character for position #" << i << " in the phone number\n";
    cout << "NOTE: Please put the hyphen \" - \" in the fourth position and use \"Q\"to quit." << endl;
    char temp;
    cin >>temp;

        if (i = 1 && temp == 0)
        {
            return_value = -2;
        }
        else if (i == 1 && (temp == 'q' || temp == 'Q'))
        {
            return_value -5;
        }

        else if (i == 1)
        {
            temp = &num1;
            &inputValue = &num1;
            int To_Digit(char &num1);       
        }
        else if (i == 2)
        {
            temp = &num2;
            &inputValue = &num2;
            int To_Digit(char &num2);
        }
        else if (i == 3)
        {
            temp = &num3;
            &inputValue = &num3;
            int To_Digit(char &num3);
        }
        else if (&num1 == '5' && &num2 == '5' && &num3 == '5')
        {
            return_value -3;
        }
        else if (i == 4 && temp != '-')
        {
            return_value -4;
        }
        else if (i == 5)
        {
            temp = &num5;
            &inputValue = &num5;
            int To_Digit(char &num5);
        }
        else if (i == 6)
        {
            temp = &num6;
            &inputValue = &num6;
            int To_Digit(char &num6);
        }
        else if (i == 7)
        {
            temp = &num7;
            &inputValue = &num7;
            int To_Digit(char &num7);
        }
        else if (i == 8)
        {
            temp = &num8;
            &inputValue = &num8;
            int To_Digit(char &num8);
        }
    }while (i < 8)
    return 0;
}

Функция To_Digit

Вторая и последняя ошибка, которую я получаю, находится здесь, во второй строке (открывающая скобка):

Определение функции здесь недопустимодо '{' token

int To_Digit(char &inputValue)
{

char &inputValue;

    if (isdigit(&inputValue))
        break;

    &inputValue = toupper(&inputValue);

    switch(&inputValue){

        case 'A': case 'B': case 'C':
            &inputValue = '2'; 
                break;

        case 'D': case 'E': case 'F':
            &inputValue = '3'; 
                break;

        case 'G': case 'H': case 'I':
            &inputValue = '4'; 
                break;

        case 'J': case 'K': case 'L':
            &inputValue = '5'; 
                break;

        case 'M': case 'N': case 'O':
            &inputValue = '6'; 
                break;

        case 'P': case 'Q': case 'R': case 'S':
            &inputValue = '7'; 
                break;

        case 'T': case 'U': case 'V':
            &inputValue = '8'; 
                break;

        case 'W': case 'X': case 'Y': case 'Z':
            &inputValue = '9'; 
                break;
        default:
            return -1;

    }
}

Функция Acknowledge_Call

Нет ошибок с этой функцией.

void Acknowledge_Call(digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8)
{
    cout << "Phone number entered is: " << digit1 << digit2 << digit3 << digit4 << digit5 << digit6 << digit7 << digit8 << endl;
}

Что не так с этим кодом?Как я могу это исправить?

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

Я еще не пробовал сам запускать код, но единственное, что я вижу, что мне кажется неестественным, - это функция "Read_Dials" ... не помещайте оператор #INCLUDE внутри функции. Всегда помещайте эти операторы вверху файла.

Переместите #include и дайте нам знать, что это делает. Удачи.

2 голосов
/ 24 марта 2011

Ваши #include должны быть в начале файла ...

if (return_value != -5)
    break;

(в основном) не допускается, так как нет цикла, из которого он может выйти из

2 голосов
/ 24 марта 2011
 default:
     void Acknowledge_Call(digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8);

Тип возврата не используется при вызове функции. Итак, капля void. Также default чехол должен иметь break, иначе он будет провал .


int Read_Dials(char &num1, char &num2, char &num3, char &num4, char &num5, char &num6, char &num7, char &num8)
{

   #include "To_Digit.h"  // The header actually has a definition. Preprocessor 
                          // copies the content of To_Digit.h here. So, you have
                          // a function definition inside another function while 
                          // compilation phase which is not allowed. So remove
                          // it and place it at top of the file.
   // .....

}
0 голосов
/ 24 марта 2011

Вот некоторые проблемы (помимо того, что вы не указали заголовочные файлы):

  1. Объявление функции после "default" в main()
    Удалите voidперед вызовом функции.

  2. Типы для параметров, не указанных в объявлении для Acknowledge_Call
    Изменить на:
    void Acknowledge_Call(char digit1, char digit2, char digit3, char digit4, char digit5, char digit6, char digit7, char digit8)

  3. Удалить int перед Read_dials в функции main.

  4. В main() измените 'Чтения_данных to Чтения_дисков :<br> The C++ language is case-sensitive, thus 'dials! = Dials! = dIaLs.

  5. Удалите break после if в main() функции:
    Вы хотите return 1; или return EXIT_FAILURE; или exit(1);

  6. Не забудьте добавить эти строки в Acknowledge_Calls.cpp:

    #include "acknowledge_call.h"
    #include <iostream>
    using namespace std;

  7. Не забудьте добавить эти строки в Read_Dials.cpp:

    #include "read_dials.h"
    #include <iostream>
    using namespace std;

  8. В Read_Dials.cpp переместите #include "To_Digit.h в начало файла.

  9. При выполнении функции all не указывайте ни тип возврата, ни типы параметров в вызове.
    Например, вместо этого используйте:
    num1 = To_Digit(digit1);
    из
    int To_Digit(char &num1);

Вам необходимо долго поговорить с инструктором о том, как вызывать функции и передавать параметры (на этот раз внимательно слушайте).Также прочитайте хорошую книгу по C ++.

...