проблема определения строки - PullRequest
0 голосов
/ 25 апреля 2011
int main() 
{ 
    int score; 
    string scoreLetter; 
    char A, B, C, D, F; 

    cout<<"Enter the grade: "; 
    cin>> score; 

    void letterGrade (int score); 
    void gradeFinal (int score); 

    cout<<"The letter grade is "<< scoreLetter<<"."; 
} 

void letterGrade (int score) 
{ 
    if (score >= 90) { 
        string scoreLetter = 'A'
    } else if (score >= 80) { 
        scoreLetter = 'B'
    } else if (score >= 70) 

-При компиляции я получаю сообщение об ошибке для строки ScoreLetter = 'A' и т. Д. Что с этим не так? Состояния ошибки 'ScoreLetter' не определено. Нужно ли определять ScoreLetter в функции, а не в главной?

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Одиночные кавычки в C / C ++ используются для определения символа, а не строки.Вместо этого используйте двойные кавычки.string scoreLetter = "A".Также вам нужно включить заголовок, если вы пытаетесь использовать std::string: #include <string> и using std::string.

0 голосов
/ 25 апреля 2011

Вы захотите вернуть любое значение, которое ваша функция определит как scoreLetter, а в main есть строка типа scoreLetter = letterGrade(score);.Вы не можете установить локальные переменные из другой функции, если только вызывающая сторона не передаст их вам по ссылке, чего здесь не происходит (и, в большинстве случаев, не следует так злоупотреблять).

В сторонуИсходя из этого, похоже, что вы смешиваете объявления и вызовы.void letterGrade (int score); на самом деле не звонит letterGrade;он просто говорит, что - это letterGrade функция, которая принимает целое число, которое мы назовем «счетом».(score - это просто имя, являющееся частью прототипа; оно не имеет связи с вашей переменной score.) Таким образом, вы, вероятно, обнаружите, что если вам удастся заставить ваш код скомпилироваться, он что-то сделаетсовсем не так, как вы ожидаете.

Чтобы вызвать функцию, вы должны сделать что-то вроде letterGrade(score); или, если вы последуете моему первому предложению, scoreLetter = letterGrade(score);.

string letterGrade (int score); 
// void gradeFinal (int score);  // not used in this snippet

int main() 
{ 
    int score; 
    string scoreLetter; 
    char A, B, C, D, F; 

    cout<<"Enter the grade: "; 
    cin>> score; 

    scoreLetter = letterGrade(score);

    cout<<"The letter grade is "<< scoreLetter<<"."; 
} 

string letterGrade (int score) 
{
    string grade;
    if (score >= 90) { 
        grade = "A";
    } else if (score >= 80) { 
        grade = "B";
    } else if (score >= 70)

    ...

    return grade;
}
0 голосов
/ 25 апреля 2011

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

Вам также следует постараться более точно указать, на каком языке вы говорите, т. Е. C в этомслучай, который я считаю.

Правильный вызов функций будет:

letterGrade (оценка);

И да, вам нужно определить строковую переменную в глобальной области видимости,так что просто переместите его из основного и над ним.

    string scoreLetter; 
    int main() 
{ 
    int score; 
    char A, B, C, D, F; 

    cout<<"Enter the grade: "; 
    cin>> score; 

    letterGrade (score); 
    gradeFinal (score); 

    cout<<"The letter grade is "<< scoreLetter<<"."; 
} 

void letterGrade (int score) 
{ 
    if (score >= 90) { 
        scoreLetter = "A"
    } else if (score >= 80) { 
        scoreLetter = "B"
    } else if (score >= 70) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...