В задаче необходимо вывести имена учащихся без троек, двоек и колов. Однако моя программа выводит имена всех введенных учащихся. В чем проблема?? Вот код
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";
}
}
}
Выражения вида
(4<=stud[i].x<=5)
следует заменить на
(stud[i].x >= 4 && stud[i].x <= 5)
У вас же получалось, что число сравнивалось с логическим значением (результатом второй операции сравнения).
Не знаю чем Вы собирали программу, но 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;
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Объясните, пожалуйста, почему в данном коде переменная a попрежнему осталась NULL? Ведь указатель - это адресс на область памятиИзначально он никуда...
Суть : Допустим у нас есть функция, в результате выполнения действий внутри нее мы получаем значения переменных, которые нам необходимо вернутьКак...
Macbook C++ C# Ggdghcdyvxghdfjvdfhcdgvxghcdhbcg