Написание программы для записи 3 оценок, а затем вычисление среднего, а также отображение буквенных оценок пользовательского ввода

#c

#c

Вопрос:

Я сталкиваюсь с 3 ошибками в своем коде. В строке 12 говорится, что «: игнорируется слева от ‘const char’, когда в строке 29 не объявлена переменная, ‘{‘: соответствующий токен не найден. В строке 6 тип возвращаемого значения ‘main’ должен быть ‘int’ вместо ‘void’ Мой код:

 /*Write a program to read 3 grades. Grades are between 0-100. Calculate the average, then print the 
following message. */
#include<iostream>

using namespace std;

void main() {
int grade1{};
int grade2{};
int grade3{};
int average{};
int sum{};
const char;

cout << "Enter 3 grades (as a number between 0-100): " << endl;
cin >> grade1 >> grade2 >> grade3;
if (grade1 >= 90)
{
    cout << 'A' << endl;
}
if (grade1 <= 89)
{
    cout << 'B' << endl;
}
if (grade1 <= 79)
{
    cout << 'C' << endl;
}
if (grade1 <= 69)
{
    cout << 'D' << endl;
}
if (grade2 >= 90)
{
    cout << 'A' << endl;
}
if (grade2 <= 89)
{
    cout << 'B' << endl;
}
if (grade2 <= 79)
{
    cout << 'C' << endl;
}
if (grade2 <= 69)
{
    cout << 'D' << endl;
}
if (grade3 >= 90)
{
    cout << 'A' << endl;
}
if (grade3 <= 89)
{
    cout << 'B' << endl;
}
if (grade3 <= 79)
{
    cout << 'C' << endl;
}
if (grade3 <= 69)
{
    cout << 'D' << endl;
}
else
    cout << 'F' << endl;
sum = (grade1   grade2   grade3);
average = (sum / 3);
    cout << "Your average is: " << average << endl;
    }
 

Кто-нибудь знает, что я могу сделать, чтобы исправить эти ошибки? Пожалуйста, помогите мне. Спасибо! 🙂

Комментарии:

1. 1) Предложение «возвращаемый тип ‘main’ должен быть ‘int’ вместо’void'», на мой взгляд, дает довольно четкое сообщение. 2) В строке 29 нет ничего плохого. 3) Вы удивлены, что просто написание типа, например const char; , является ошибкой?

2. Если бы вы написали printGrade(int score) функцию, вам пришлось бы написать этот код (и исправить ошибку вывода) только один раз.

3. В качестве примечания, вы можете использовать if-else-chains вместо if-chains (чтобы избежать печати нескольких букв)

Ответ №1:

Заменить void main() на int main() (именно так работает C ). Кроме того, что вы пытаетесь сделать const char ? Вы не объявляете какую-либо переменную и не используете эту строку, поэтому вы можете просто удалить ее.

В строке 29 нет ничего плохого, после исправления двух других проблем код работает просто отлично.

Некоторые дополнительные замечания:

  • избегайте using namespace std
  • объявите свои переменные в первый момент, когда вы их используете. Например, напишите int sum = grade1 grade2 grade3;
  • Постарайтесь избежать дублирования кода, написав функцию, которая выполняет оценку.
  • Используйте else if вместо if , иначе число, которое находится между 70 и 79 , также меньше 89 и приводит к нежелательному выводу.

Комментарии:

1. Я запустил его снова, он работает, но когда я попробовал ввести три 100, внизу было написано AAA, и на этом все должно было закончиться. Он добавил дополнительную букву после AAA и поставил F. Кто-нибудь знает, как это исправить? Он делает это и для любых других чисел. 100 100 100. Результат AAAF.

2. Из else cout << 'F' << endl; -за этого происходит, когда условие в предыдущем if равно false. Если вы замените все, кроме первого if , на else if . это будет исправлено. Так что это происходит, когда grade3 > 69 .

3. Внизу я должен вывести определенное сообщение на основе предоставленной информации. Итак, если я введу 100 в три раза больше своих оценок, я хочу, чтобы он выводил: ваше среднее значение равно: 100, ваша буквенная оценка равна: (A или B или C или D или F)»Как мне заставить его выводить буквенную оценку на основе заданных оценок? (Кстати, я убрал const char вверху). На данный момент на выходе отображаются три 100-х годов подряд, а затем буквенная оценка A, как мне переместить эту буквенную оценку в следующую строку, где написано сообщение: «Ваше среднее значение: 100, ваша буквенная оценка: »

Ответ №2:

Что касается строки 12, кажется, что вы пытаетесь объявить постоянную переменную, но для переменной нет имени.

Что касается ошибки в строке 6, в сообщении объясняется, что вы могли бы сделать для ее устранения, измените возвращаемый тип main на int .

Что касается строки 29, я не думаю, что есть ошибка.