C++ programozás – 2013 májusi emelt informatika érettségi – választások

A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le.

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

struct jelolt
{
    int kerulet;
    int szavazatok;
    string nev;
    string part;

    string toString()
    {
        stringstream ss;
        ss << " " << kerulet << " " << szavazatok
        << " " << nev << " " << part << " " << endl;
        return ss.str();
    }

};



int main()
{
// 1. feladat
    ifstream input("szavazatok.txt");

    int meret = 0;

    string tmp;
    while( getline(input,tmp) )
    {
        meret++;
    }

    jelolt jeloltek[meret];

    input.clear();
    input.seekg(0);

    for( int i = 0; i < meret; i++ )
    {
        string vnev;
        string knev;
        input >> jeloltek[i].kerulet >> jeloltek[i].szavazatok >>
        vnev >> knev >> jeloltek[i].part;

        jeloltek[i].nev = vnev + " " + knev;
//        cout << jeloltek[i].toString();
    }
    input.close();

// 2. feladat
    cout << endl << "2. feladat" << endl;
    cout << "A helyhatosagi valasztason " << meret
      << " kepviselojelolt indult." << endl;

// 3. feladat
    cout << endl << "3. feladat" << endl;
    cout << "Add meg egy kepviselojelolt vezetek es utonevet: ";
    string nev;
    getline(cin, nev);

    bool van = false;
    for( int i = 0; i < meret; i++ )
    {
        if( jeloltek[i].nev == nev )
        {
            cout << "A jelolt " << jeloltek[i].szavazatok
              << " db szavazatot kapott." << endl;
            van = true;
            break;
        }
    }

    if( van == false )
    {
        cout << "Ilyen nevu kepviselojelolt nem szerepel a nyilvantartasban!" << endl;
    }

// 4. feladat
    cout << endl << "4. feladat" << endl;
    int osszes = 0;
    for( int i = 0; i < meret; i++ )
    {
        osszes += jeloltek[i].szavazatok;
    }

    cout.precision(4);
    cout << "A valasztason " << osszes << " allampolgar, a jogosultak " <<
         (osszes/(double)12345)*100 << "%-a vett reszt." << endl;

    cout << endl << "5.feladat" << endl;

    int fuggetlen = 0;
    int gyumolcsevo = 0;
    int husevo = 0;
    int tejivo = 0;
    int zoldsegevo = 0;
    for(int i = 0; i < meret; i++)
    {
        if(jeloltek[i].part == "-")
        {
            fuggetlen += jeloltek[i].szavazatok;
        }
        else if(jeloltek[i].part == "GYEP")
        {
            gyumolcsevo += jeloltek[i].szavazatok;
        }
        else if(jeloltek[i].part == "HEP")
        {
            husevo += jeloltek[i].szavazatok;
        }
        else if(jeloltek[i].part == "TISZ")
        {
            tejivo += jeloltek[i].szavazatok;
        }
        else
        {
            zoldsegevo += jeloltek[i].szavazatok;
        }
    }

    double atlag = 0;
    atlag = (double) fuggetlen/osszes*100;
    cout << "Fuggetlen jeloltek " << atlag << "%" << endl;

    atlag = (double) gyumolcsevo/osszes*100;
    cout << "Gyumolcsevok Partja " << atlag << "%" << endl;

    atlag = (double) husevo/osszes*100;
    cout << "Husevok Partja " << atlag << "%" << endl;

    atlag = (double) tejivo/osszes*100;
    cout << "Tejivok Szovetsege " << atlag << "%" << endl;

    atlag = (double) zoldsegevo/osszes*100;
    cout << "Zoldsegevok Partja " << atlag <<  "%" << endl;


    cout << endl << "6. feladat" << endl;
    int max = jeloltek[0].szavazatok;
    for(int i = 1; i < meret; i++)
    {
        if(jeloltek[i].szavazatok > max)
        {
            max = jeloltek[i].szavazatok;
        }
    }

    for(int i = 0; i < meret; i++)
    {
        if(jeloltek[i].szavazatok == max)
        {
            if(jeloltek[i].part == "-")
            {
                cout << jeloltek[i].nev << " fuggetlen" << endl;
            }
            else
            {
                cout << jeloltek[i].nev << " " << jeloltek[i].part << endl;
            }
        }
    }

// 7. feladat
    int nyertesek[9];

    for(int i = 0; i < 9; i++)
    {
        nyertesek[i] = -1;
    }

    for(int i = 0; i < meret; i++)
    {
        int kerulet = jeloltek[i].kerulet;
        if( nyertesek[kerulet] == -1
           || jeloltek[i].szavazatok > jeloltek[nyertesek[kerulet]].szavazatok)
        {
            nyertesek[kerulet] = i;
        }
    }

    ofstream ki("kepviselok.txt");
    for(int i = 1; i < 9; i++)
    {
        if(jeloltek[nyertesek[i]].part == "-")
        {
            ki << i << " " << jeloltek[nyertesek[i]].nev << " "
            << "fuggetlen" << endl;
        }
        else
        {
            ki << i << " " << jeloltek[nyertesek[i]].nev << " "
            << jeloltek[nyertesek[i]].part << endl;
        }
    }
    ki.close();
    return 0;
}

Ha hibát találsz benne, kérlek jelezd!

2 Replies to “C++ programozás – 2013 májusi emelt informatika érettségi – választások”

  1. Tetszik a kód, abszolút hasznos az érettségi felkészüléshez. Egy gondom van, Visual Studiot valasztottam IDEnek.
    jelolt jeloltek[meret];

    input.clear();
    input.seekg(0);
    Részt nem tudja értelmezni mert a paraméterben nem konstans van.
    Slusszpoén, a CodeBlocks simán lefutatja. Esetleg valami orvoslást tud erre?

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .