Dzień dobry,
mam drobny problem ze spoj i zadaniem https://pl.spoj.com/problems/FR_02_06/, mianowicie sędzia Spoj ciągle wyrzuca mi błędna odpowiedź mimo iż wydaje mi się, że program działa prawidłowo, według ideone również program działa prawidłowo.
szukam i szukam co może być nie tak, źle znaleźć nie mogę
będę wdzięczna za wszystkie podpowiedzi.
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
struct Person {
string name = "";
double weightInKilograms = 0;
double heightInCentimeters = 0;
};
Person enterPersonDetails() {
Person person;
cin >> person.name >> person.weightInKilograms >> person.heightInCentimeters;
return person;
}
double calculateBMI(const Person& person) {
double heightInMeters = person.heightInCentimeters / 100.0;
return person.weightInKilograms / (heightInMeters * heightInMeters);
}
string classify(const Person& person) {
double bmi = calculateBMI(person);
if (bmi <= 18.5)
return "niedowaga";
else if (bmi <= 25)
return "wartosc prawidlowa";
else
return "nadwaga";
}
void groupPeople(const vector<Person>& people, map<string, vector<Person>>& groups) {
for (const Person& person : people) {
string classif = classify(person);
groups[classif].push_back(person);
}
}
void printPeople(const vector<Person>& people, const string& groupName) {
if (!people.empty()) {
cout << groupName << " :" <<endl;
for (const Person& person : people)
cout << person.name << endl;
cout << endl;
}
}
int main() {
int howManyTest;
cin >> howManyTest;
vector<Person> people;
for (int i = 0; i < howManyTest; i++) {
people.push_back(enterPersonDetails());
}
map<string, vector<Person>> groups;
groupPeople(people, groups);
printPeople(groups["niedowaga"], "niedowaga");
printPeople(groups["wartosc prawidlowa"], "wartosc prawidlowa");
printPeople(groups["nadwaga"], "nadwaga");
return 0;
}