Bahooka Ответов: 2

Почему я получаю ожидаемое первичное выражение перед >= и как его исправить


if (score[0] >= gradeA){
      cout << "student 0 score is " << score[0] << " and grade is A";
  }
  if (score[0] <=gradeA & >= gradeB){
      cout << "student 0 score is " << score[0] << " and grade is B";
  }
  if (score[0] <=gradeB & >= gradeC){
      cout << "student 0 score is " << score[0] << " and grade is C";
  }
  if (score[0] <=gradeC & >= gradeD){
      cout << "student 0 score is " << score[0] << " and grade is D";
  }
  if (score[0] <= gradeD){
      cout << "student 0 score is " << score[0] << " and grade is F";
  }


Что я уже пробовал:

попробовал поставить && все равно получил то же самое сообщение

2 Ответов

Рейтинг:
1

phil.o

тип Boolean AND опратор есть &&, нет &.
& является побитовым оператором и, что не одно и то же.
И вы не можете вывести левый операнд для второго теста, как вы это сделали. Вы должны написать его для каждого теста.

if (score[0] >= gradeA) {
   cout << "student 0 score is " << score[0] << " and grade is A";
}
else if (score[0] >= gradeB) {
   cout << "student 0 score is " << score[0] << " and grade is B";
}
else if (score[0] >= gradeC) {
   cout << "student 0 score is " << score[0] << " and grade is C";
}
else if (score[0] >= gradeD) {
   cout << "student 0 score is " << score[0] << " and grade is D";
}
else {
   cout << "student 0 score is " << score[0] << " and grade is F";
}


Bahooka

просто попробовал это сделать и он все еще говорил то же самое сообщение

phil.o

Пожалуйста, смотрите мой измененный ответ.

CPallini

5.

phil.o

Спасибо Карло :)

Patrice T

мой 5 тоже

phil.o

Спасибо Патрис :)

Рейтинг:
0

Patrice T

Цитата:
Почему я получаю ожидаемое первичное выражение до >=

Потому что нет никакого неявного повторения счета[0]
// your code
if (score[0] <=gradeA & >= gradeB){
// is like writing
if ((score[0] <=gradeA) & ( >= gradeB)){
// and the correct syntax is
if (score[0] <=gradeA & score[0] >= gradeB){
// and you need to fix also the logical AND
if (score[0] <=gradeA && score[0] >= gradeB){

Еще одна проблема в вашем коде: если оценка[0]=gradeA
// if score[0]=gradeA
if (score[0] >= gradeA){ // this test will match
    cout << "student 0 score is " << score[0] << " and grade is A";
}
if (score[0] <=gradeA & score[0] >= gradeB){ // and this one too
    cout << "student 0 score is " << score[0] << " and grade is B";
}
// so code will say that student is grade A and gradeB

Код решения 2-это лекарство от этой проблемы.


CPallini

5.

Patrice T

Спасибо