Ошибка при проверке
такая ошибка при проверки пола в структуре(Array[i].sex).
for (int i = 0; i < size; i++)
{
if (Array[i].SEX != "W" && Array[i].SEX != "w")
{
Average += Array[i].VIK;
counter++;
}
}
ошибка в данном цикле ,что я не так делаю ?Полный код прикладываю:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
struct MISTO
{
char* NAME;
int VIK;
char* SEX;
};
void FillingStruct(MISTO* Array, int size)
{
for (int i = 0; i < size; i++)
{
cout << "Habitant #" << i + 1 << "\nEnter Suname: ";
char surname[50];
cin >> surname;
Array[i].NAME = new char[strlen(surname) + 1];
strcpy(Array[i].NAME, surname);
cout << "Enter age:";
cin >> Array[i].VIK;
cout << "Enter gender(m/w):";
char SEX[2];
cin >> SEX;
Array[i].SEX = new char[strlen(SEX) + 1];
strcpy(Array[i].SEX, SEX);
}
}
int AverageAgeW(MISTO* Array, int size)
{
int counter = 0;
int Average = 0;
for (int i = 0; i < size; i++)
{
if (Array[i].SEX != "M" && Array[i].SEX != "m")
{
Average += Array[i].VIK;
counter++;
}
}
return Average/counter;
}
int AverageAgeM(MISTO* Array, int size)
{
int counter = 0;
int Average = 0;
for (int i = 0; i < size; i++)
{
if (Array[i].SEX != "W" && Array[i].SEX != "w")
{
Average += Array[i].VIK;
counter++;
}
}
return Average / counter;
}
void print(MISTO* Array, int size, int AverageAgeW, int AverageAgeM)
{
cout << "\nDisplay information about those who are older than average.\n";
for (int i = 0; i < size; i++)
{
if (Array[i].SEX != "W" || Array[i].SEX != "w" && Array[i].VIK >= AverageAgeM)
cout << "Name: " << Array[i].NAME << " VIK:" << Array[i].VIK << " SEX: " << Array[i].SEX << endl;
if (Array[i].SEX != "M" || Array[i].SEX != "m" && Array[i].VIK >= AverageAgeW)
cout << "Name: " << Array[i].NAME << " VIK:" << Array[i].VIK << " SEX: " << Array[i].SEX << endl;
}
}
int main()
{
int size = 0;
int AverageAgeWoman = 0;
int AverageAgeMen = 0;
cout << "Enter size: ";
cin >> size;
MISTO* Array = new MISTO[size];
FillingStruct(Array, size);
AverageAgeWoman = AverageAgeW(Array, size);
AverageAgeMen= AverageAgeM(Array, size);
cout << "Average age of women =" << AverageAgeWoman;
cout << "\nAverage age of men =" << AverageAgeMen;
print(Array, size, AverageAgeWoman,AverageAgeMen);
delete[]Array;
system("PAUSE");
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Сравниваете два указателя, а не строки, на которые они указывают. Правильнее
if (strcmp(Array[i].SEX,"W")
или, раз уж у вас C++. использовать тип string - там как раз такое, как у вас, сравнение имеет смысл.
ДА, кстати, обычно пол обозначают M и F - от Male и Female...