C++ Bc. 11 cpp

Z GeoWikiCZ
(přesměrováno z C plus plus Bc. 11 cpp)
#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 \n"
                      "-4  2 -1  3 -7  1 -1  4 -2 -1 \n"
                      "-2  3  1 -3  4  6 -7 -1  1  1 \n");
  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;
    }
}

[ Zpět ]