Ожидается "}" в конце ввода в основной функции моей программы
Эта программа должна учить функции. Я разделил функции каждой в заголовочные файлы. Я думаю, что где-то есть фигурная скобка, которая задом наперед или отсутствует, но я часами смотрел на эту программу и пробовал переставлять вещи и, похоже, ничего не получалось.
Эта программа должна прочитать номер телефона и распечатать его. Если ему предоставлены буквы, то он будет сортировать его по номеру 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
Вторая и последняя ошибка, которую я получаю, находится здесь, на второй строке (открывающая скобка):
Определение функции здесь не допускается до токена '{'
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 ответа
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.
// .....
}
Ваш #include должен быть в верхней части файла...
if (return_value != -5)
break;
(в основном) не допускается, так как нет цикла для его выхода из
Я еще не пробовал сам запускать код, но единственное, что я вижу, что мне кажется неестественным, - это функция "Read_Dials"... не помещайте оператор #INCLUDE в функцию. Всегда размещайте эти утверждения в верхней части файла.
Переместите #include и дайте нам знать, что это делает. Удачи.
Вот некоторые проблемы (помимо того, что вы не указали заголовочные файлы):
Объявление функции после "по умолчанию" в
main()
Удалитьvoid
перед вызовом функции.Типы для параметров, не указанных в декларации для
Acknowledge_Call
Изменить на:void Acknowledge_Call(char digit1, char digit2, char digit3, char digit4, char digit5, char digit6, char digit7, char digit8)
Удалить
int
передRead_dials
вmain
функция.В
main()
изменить 'Read_dialsto
Read_Dials:
знак равно
The C++ language is case-sensitive, thus 'dialsDials
знак равноdIaLs
,Удалить
break
послеif
вmain()
функция:
Ты хочешьreturn 1;
или жеreturn EXIT_FAILURE;
или жеexit(1);
Не забудьте добавить эти строки в
Acknowledge_Calls.cpp
:#include "acknowledge_call.h"
#include <iostream>
using namespace std;
Не забудьте добавить эти строки в
Read_Dials.cpp
:#include "read_dials.h"
#include <iostream>
using namespace std;
В
Read_Dials.cpp
переместите#include "To_Digit.h
в начало файла.При выполнении функции all не помещайте ни тип возвращаемого значения, ни типы параметров в вызове.
Например, используйте:num1 = To_Digit(digit1);
вместоint To_Digit(char &num1);
Вам необходимо долго поговорить с инструктором о том, как вызывать функции и передавать параметры (на этот раз внимательно слушайте). Также прочитайте хорошую книгу по C++.