#include <iostream>
#include <sstream>
#include <map>
#include <iomanip>
struct Test {
float uspesnost;
int celkem;
};
typedef std::map<int, Test> Data;
void uspesnost(std::istream& input, Data& data);
int main()
{
using namespace std;
// vstupni data pro testovani, jinak std::cin
istringstream input(" 1 2 3 -2 -1 4 1 6 1 3"
"-4 2 -1 3 -7 1 -1 4 -2 -1"
"-2 3 1 -3 4 6 -7 -1 1 1");
Data data;
uspesnost(input, data);
// format fixed, vystup na 2 desetinna mista
cout.setf(ios_base::fixed, ios_base::floatfield);
cout.precision(2);
cout << "cislo celkem uspesnost \n";
for (Data::iterator i=data.begin(), e=data.end(); i!=e; ++i)
{
int cislo = i->first;
float uspesnost = i->second.uspesnost;
int celkem = i->second.celkem;
cout << setw(4) << cislo << " "
<< setw(5) << celkem << " "
<< setw(8) << uspesnost << "\n";
}
}
void uspesnost(std::istream& input, Data& data)
{
using namespace std;
int t, cislo;
while (input >> t)
{
cislo = abs(t);
if (t > 0) data[cislo].uspesnost++;
data[cislo].celkem++;
}
for (Data::iterator i=data.begin(), e=data.end(); i!=e; ++i)
{
Test& t = i->second;
t.uspesnost /= t.celkem;
}
}