Здравствуйте.
В данный момент, Я активно изучаю плюсы и столкнулся с проблемой в ходе решения институтской задачи: требуется из структуры выбрать сотрудников с высшим образованием, и рассчитать их процент от общего количества. Там еще несколько функций в программе, которые работают нормально. Имею проблему только с решением этой части. И проблема заключается в том, что результат после прохождения цикла негативный, и все сотрудники без высшего образования. Что я делаю не так? Или я попросту неправильно выполняю сравнение строк?
Собственно код:
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "string"
#include "stdio.h"
using namespace std;
int main()
{
struct employees {
char surname[20], position[10], education[20];
int birth, salary;
};
int count = 0;
cout << "Input the quantity of employees - " << endl;
cin >> count;
employees *z = new employees[count];
cout << "Input rows with information about of " << count << " employees:" << "\nSurname Position Education Age Salary" << endl;
for (int i = 0; i < count; i++)
scanf("%s %s %s %i %i", z[i].surname, z[i].position, z[i].education, &z[i].birth, &z[i].salary);
//under30
cout << "Employees under age 30: " << endl;
int age30 = 0;
for (int i = 0; i < count; i++)
if (z[i].birth <= 30) {
age30++;
printf("%s %s %s %i %i\n", z[i].surname, z[i].position, z[i].education, z[i].birth, z[i].salary);
}
cout << endl << "Amount of employees under 30: " << age30 << endl;
<b>//highedu
int percent = 0;
int masters = 0;
int dumbs = 0;
for (int i = 0; i < count; i++) {
if (z[i].education == "master" || z[i].education == "specialist" || z[i].education == "bachelor") {
masters = masters + 1;
}
else if (z[i].education != "master" || z[i].education != "specialist" || z[i].education != "bachelor") {
dumbs++;
}
}
percent = (count * 100) / masters;
cout << "Percent of the employees with the high education: " << percent << "%" << endl;
cout << "Count of the employees with the high education: " << masters << endl;;
cout << "Count of the dumb employees: " << dumbs << endl;</b>
//oldyoung
char nameoldest[22];
char nameyoungest[22];
int ageoldest = 0;
int ageyoungest = 30;
for (int i = 0; i < count; i++) {
//young
if (z[i].birth >= ageyoungest) {
ageyoungest = z[i].birth;
strcpy(nameyoungest, z[i].surname);
}
else if (z[i].birth >= ageoldest) {
ageoldest = z[i].birth;
strcpy(nameoldest, z[i].surname);
}
}
cout << endl << "Oldest employee: " << nameyoungest << " with age:" << ageyoungest << endl;
cout << endl << "Youngest employee: " << nameoldest << " with age:" << ageoldest << endl;
//salary
int avgsalary = 0;
int savg = 0;
for (int i = 0; i < count; i++)
savg = (savg + z[i].salary) / count;
cout << "Average salary: " << savg << endl;;
cout << "Employees, with the salary more than average" << endl;
for (int i = 0; i < count; i++)
if (z[i].salary >= savg) {
printf("%s %s %i\n", z[i].surname, z[i].position, z[i].salary);
}
system("pause");
return 0;
}
Жду советов по решению данной проблемы. Заранее всем спасибо.