Неправильная работа программы

268
12 декабря 2017, 19:48

В задаче необходимо вывести имена учащихся без троек, двоек и колов. Однако моя программа выводит имена всех введенных учащихся. В чем проблема?? Вот код

  struct st {
        char a[100];
        char b[100];
        int z,y,x;
    };
    int main() {
        int n;
        cin >>n;
        st stud[n];
        for (int i = 0; i < n; i++) {
            cin >> stud[i].a >> stud[i].b;
            cin>>stud[i].x >> stud[i].y>>stud[i].z;
        }
        for (int i = 0; i < n; i++){
                if ((4<=stud[i].x<=5) && (4<=stud[i].y<=5)&&(4<=stud[i].z<=5)) {
                   cout <<stud[i].a <<" " <<stud[i].b << "\n";
                }
            }
    }
Answer 1

Выражения вида

(4<=stud[i].x<=5)

следует заменить на

(stud[i].x >= 4 && stud[i].x <= 5)

У вас же получалось, что число сравнивалось с логическим значением (результатом второй операции сравнения).

Answer 2

Не знаю чем Вы собирали программу, но msvc2015 ругается на попытку создания массива на стеке с размером указанным переменной. Поменял на векторы

#include <iostream>
#include <vector>
struct Student {
    char a[100];
    char b[100];
    int z,y,x;
};
bool goodMark(int _mark)
{
    return _mark == 4 || _mark == 5;
}
int main() {
    int n;
    std::cin >> n;
    std::vector<Student> studVec;
    for (int i = 0; i < n; i++)
    {
        Student stItem;
        std::cin >> stItem.a >> stItem.b;
        std::cin >> stItem.x >> stItem.y >> stItem.z;
        studVec.push_back(stItem);
    }
    for(int i = 0 ; i < n; i++)
    {
        const Student &stItem = studVec[i];
        if(goodMark(stItem.x) && goodMark(stItem.y) && goodMark(stItem.z))
        {
            std::cout << stItem.a << " " << stItem.b << std::endl;
        }
    }
}
READ ALSO
Не изменяется значение указателя

Не изменяется значение указателя

Объясните, пожалуйста, почему в данном коде переменная a попрежнему осталась NULL? Ведь указатель - это адресс на область памятиИзначально он никуда...

207
Как вернуть через функцию два значения в C++?

Как вернуть через функцию два значения в C++?

Суть : Допустим у нас есть функция, в результате выполнения действий внутри нее мы получаем значения переменных, которые нам необходимо вернутьКак...

284