Почему неправильно считает количество людей, которые живут на введенной с клавиатуры улице?
Массив структур метит информацию о 30 студентов: фамилия; имя; номер группы; адрес прописки; пол. Считать данные с файла и подсчитать количество студентов, которые прописаны на заданной с клавиатуры улице.
struct Students
{
char name[20];
char surname[20];
char adress[40];
char gender[15];
int numberofgroup;
};
int main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
bool ReadFile(Students * &arr_Students, int& size);
void print(Students * arr_Students, int size);
int size;
Students* arr_Students;
if (ReadFile(arr_Students, size))
print(arr_Students, size);
else
cout << "Error opening file!" << endl;
cin.get();
return 0;
}
bool ReadFile(Students*& arr_Students, int& size)
{
ifstream fin("Students.txt");
if (!fin)
return false;
(fin >> size).get();
arr_Students = new Students[size];
for (int i = 0; i < size; i++)
{
fin.getline(arr_Students[i].name, 20);
fin.getline(arr_Students[i].surname, 20);
fin.getline(arr_Students[i].adress, 40);
fin.getline(arr_Students[i].gender, 15);
fin >> arr_Students[i].numberofgroup;
fin >> arr_Students[i].adress;
fin.get();
return true;
}
fin.close();
}
void print(Students* arr_Students, int size)
{
char street;
cin>>street
cout<<"enter street"
for (int i = 0; 0 < size; i++)
{
while (getline(arr_Students[i].adress, 40)
{
if (street == arr_Students[i].adress);
cout << "Number of student who live in street:" << size;
}
}
Ответы (1 шт):
Автор решения: EOF
→ Ссылка
У Вас в функции print происходят воистину ужасные вещи:)
void print(Students* arr_Students, int size)
{
// Здесь нужен массив для хранения строки, а не один символ
char street[40];
// Снаала приглашение на ввод, а потом сам ввод
cout << "enter street: ";
cin >> street;
// Что за проверка `0 < size`. Нужно сравнивать счетчик
for (int i = 0; i < size; i++)
{
// Если строки одинаковые, то strcmp возвращает 0
if (strcmp(street, arr_Students[i].adress) == 0)
cout << "Number of student who live in street: " << size << endl;
}
P.S. Не забудьте подключить cstring.