Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

2014 Balsavimu rezultatai


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2834 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Susiradau problema ir viska issisprendziau pakeistamad kelias if salygas , jei kam idomu visas kodas atrodo taip :

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const string duom = "U2.txt";
const string rez = "rez.txt";
const int amax = 6;// struckt masyvo dydis
const int logo = 3;// kiek logo
int rep = 0;

struct grupes{
    int balsai[logo];
    int taskai[logo] = {0};
};

void fileRead(const string fn, grupes v[],int dir[],int &grp);
void taskai(grupes v[],int grp);
void laimetojas(grupes v[],int grp,int &win,int visib[],int visit[],int dir[]);
void fileWrite(const string fn,int visib[],int visit[],int win);

int main(){
    int dir[logo] = {0};// direktoriaus balsai
    int visi_balsai[logo] = {0};// visi balsai
    int visi_taskai[logo] = {0};// visi taskai
    int grp; // grupiu skaicius
    int win;// laimetojas
    grupes v[amax];
    fileRead(duom,v,dir,grp);
    taskai(v,grp);
    laimetojas(v,grp,win,visi_balsai,visi_taskai,dir);
    fileWrite(rez,visi_balsai,visi_taskai,win);
    return 0;
}
// failo skaitymas , pirma grupiu skaicius tada kiekvienos grupes balsus ir galiausiai direktoriaus balsus
void fileRead(const string fn, grupes v[],int dir[],int &grp){
    ifstream fin(fn.c_str());
    fin >> grp;
    for(int a = 0; a < grp; a++){
        for(int b = 0; b < logo;b++){
            fin >> v[a].balsai[b];
        }
    }
    for(int c = 0; c < logo; c++){
        fin >> dir[c];
    }
    fin.close();
}
// skaiciuojam taskus
void taskai(grupes v[],int grp){
    for(int a =0; a < grp;a++){// tikrinsim balsus visose grupese(6)
        for(int b=0; b < logo; b++){// balsu skaicius "a" grupeje
            int lg = 0;
            int dz = 0;
            for(int c = 0;c < logo;c++){ // ciklas palyginti balsus
                if(v[a].balsai[b] > v[a].balsai[c]){
                    dz++; // jei b > uz 0-2 dz++
                }
                if(v[a].balsai[b] == v[a].balsai[c]){
                    lg++; // jei b == 0-2 lg++
                }
            }
            if(dz == logo -1){// jeigu buvo rastas didziauses +4 taskai[b]
                v[a].taskai[b] += 4;
            }
            if(dz != logo -1 && lg == 2 && dz > 0){// jeigu nebuvo rastas didziauses ir b nebuvo pats maziauses ir buvo kazkam lygus +2
                v[a].taskai[b] += 2;
            }
        }
    }
}

// tikrinam laimetoja
void laimetojas(grupes v[],int grp,int &win,int visib[],int visit[],int dir[]){
    for(int a =0; a < grp; a++){
        for(int b = 0; b < logo; b++){
           visib[b] += v[a].balsai[b];
           visit[b] += v[a].taskai[b];
        }
    }
    for(int c =0; c < logo; c++){// jieskom nugaletojo tuo paciu principu kaip ir skaiciavom taskus
        int dz = 0;
        int lg = 0;
        for(int d =0; d < logo; d++){
             if((visib[c]+visit[c]) > (visib[d]+visit[d])){
                dz++;
             }
             if((visib[c]+visit[c]) == (visib[d]+visit[d])){
                    lg++;
            }
        }
        if(dz == logo -1){
            win = c+1;// jeigu rastas cidziauses win lygus jo numeriuj +1 nes prasideda nuo 0
        }
        if(dz != logo -1 && lg == 2 && dz > 0){// jeigu nebuvo rastas didziauses ir c nebuvo pats maziauses ir jis kazkam lygus pridedam direktorius taskus prie bendru balu
            if(rep == 0){// kintamasis kuris leis prideti direktoriaus taskus tik vien akarta
                for(int e = 0; e < logo; e++){
                    visib[e] += dir[e];
                }
                laimetojas(v,grp,win,visib,visit,dir);// auksciau pridejom taskur ir kvieciam funkcija dar karta kad perskaiciuotu laimetoja
                rep++;// pridedam prie rep 1 kad nebutu pridedami direktoriaus balsai dar karta
            }
        }
    }
}
// rasom duomenis i faila visi balsai \n visi taskai \n laimetojas
void fileWrite(const string fn,int visib[],int visit[],int win){
    ofstream fout(fn.c_str());
    for(int a = 0; a < logo; a++){
        fout << visib[a] << " ";
    }
    fout << "\n";
    for(int a = 0; a < logo; a++){
        fout << visit[a] << " ";
    }
    fout << "\n";
    fout << win;
    fout.close();
}



ir gal kas gali apsviesti mane su tuo komentavimu , ar pas mane ne per dauk jo kur geriause ir kur butina komentuoti nes as stengiuosi visad viska uzkomentuoti bet nezinau ar to reikia ir ar tai nebutu perdauk kad ir egzamino metu

Redaguota , nario yahoo5000
Nuoroda į komentarą
Dalintis per kitą puslapį

Tyngiu labai nagrinėt čia tai galiu duot kodą rašyta mano tik biškį ankščiau :D prieš 2 metus kokius.

 

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int KiekSkyriu;
    int laikina;
    int DirektoriausTaskai[ 3 ];
    int SkirtiBalsaiIsvis[ 3 ];
    int SkirtiTaskaiIvis[ 3 ];
    int laimetojas = 0;

    SkirtiBalsaiIsvis[ 0 ] = 0;
    SkirtiBalsaiIsvis[ 1 ] = 0;
    SkirtiBalsaiIsvis[ 2 ] = 0;

    SkirtiTaskaiIvis[ 0 ] = 0;
    SkirtiTaskaiIvis[ 1 ] = 0;
    SkirtiTaskaiIvis[ 2 ] = 0;

    DirektoriausTaskai[ 0 ] = 0;
    DirektoriausTaskai[ 1 ] = 0;
    DirektoriausTaskai[ 2 ] = 0;

    ifstream U1;
    ofstream U1rez;
    U1.open( "U1.txt" );

    if( U1.is_open( ) )
    {
        U1 >> KiekSkyriu;
        int Taskai[ KiekSkyriu ][ 3 ];
        for( int i = 0; i < KiekSkyriu; i++ )//visi skyriai
        {
            for( int e = 0; e < 3; e++ )// kiek logotipu tiek skaito
            {
                U1 >> laikina;
                SkirtiBalsaiIsvis[ e ] += laikina;
                Taskai[ i ][ e ] = laikina;
            }


            if( Taskai[ i ][ 0 ] == Taskai[ i ][ 1 ] && Taskai[ i ][ 0 ] == Taskai[ i ][ 2 ] && Taskai[ i ][ 1 ] == Taskai[ i ][ 2 ] )//Jei visi lygus, nieko neduodame
            {
            }
            else if( Taskai[ i ][ 0 ] > Taskai[ i ][ 1 ] && Taskai[ i ][ 0 ] > Taskai[ i ][ 2 ] )
                SkirtiTaskaiIvis[ 0 ] += 4;
            else if( Taskai[ i ][ 1 ] > Taskai[ i ][ 2 ] && Taskai[ i ][ 1 ] > Taskai[ i ][ 0 ] )
                SkirtiTaskaiIvis[ 1 ] += 4;
            else if( Taskai[ i ][ 2 ] > Taskai[ i ][ 0 ] && Taskai[ i ][ 2 ] > Taskai[ i ][ 1 ] )
                SkirtiTaskaiIvis[ 2 ] += 4;
            else//yra tokiu paciu
            {
                if( Taskai[ i ][ 0 ] == Taskai[ i ][ 1 ] )
                {
                    SkirtiTaskaiIvis[ 0 ] += 2;
                    SkirtiTaskaiIvis[ 1 ] += 2;
                }
                else if( Taskai[ i ][ 1 ] == Taskai[ i ][ 2 ] )
                {
                    SkirtiTaskaiIvis[ 1 ] += 2;
                    SkirtiTaskaiIvis[ 2 ] += 2;
                }
                else if( Taskai[ i ][ 0 ] == Taskai[ i ][ 2 ] )
                {
                    SkirtiTaskaiIvis[ 0 ] += 2;
                    SkirtiTaskaiIvis[ 2 ] += 2;
                }
            }
        }


        U1 >> DirektoriausTaskai[ 0 ];
        U1 >> DirektoriausTaskai[ 1 ];
        U1 >> DirektoriausTaskai[ 2 ];

        if( SkirtiTaskaiIvis[ 0 ] == SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 2 ] ||\
        SkirtiTaskaiIvis[ 1 ] == SkirtiTaskaiIvis[ 2 ] && SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 0 ] ||\
        SkirtiTaskaiIvis[ 2 ] == SkirtiTaskaiIvis[ 0 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 1 ] )
        {
            SkirtiTaskaiIvis[ 0 ] += DirektoriausTaskai[ 0 ];
            SkirtiTaskaiIvis[ 1 ] += DirektoriausTaskai[ 1 ];
            SkirtiTaskaiIvis[ 2 ] += DirektoriausTaskai[ 2 ];
        }

        if( SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 2 ] )
            laimetojas = 1;
        if( SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 0 ] && SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 2 ] )
            laimetojas = 2;
        if( SkirtiTaskaiIvis[ 2 ] > SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 2 ] > SkirtiTaskaiIvis[ 0 ] )
            laimetojas = 3;
    }
    else
    {
        cout << "Nepavyko atidaryti failo" << endl;
    }

    U1rez.open( "U1rez.txt" );

    U1rez << SkirtiBalsaiIsvis[ 0 ] << " " << SkirtiBalsaiIsvis[ 1 ] << " " << SkirtiBalsaiIsvis[ 2 ] << endl;
    U1rez << SkirtiTaskaiIvis[ 0 ] << " " << SkirtiTaskaiIvis[ 1 ] << " " << SkirtiTaskaiIvis[ 2 ] << endl;
    U1rez << laimetojas << endl;

    U1.close( );
    U1rez.close( );
    return laimetojas;
}

Nestumkit ant kodo dešimtokas buvau tik :D. nu jau į vienuoliktą pradėjau eit atrodo.

Redaguota , nario manogugas
Nuoroda į komentarą
Dalintis per kitą puslapį

Tyngiu labai nagrinėt čia tai galiu duot kodą rašyta mano tik biškį ankščiau :D prieš 2 metus kokius.

 

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int KiekSkyriu;
    int laikina;
    int DirektoriausTaskai[ 3 ];
    int SkirtiBalsaiIsvis[ 3 ];
    int SkirtiTaskaiIvis[ 3 ];
    int laimetojas = 0;

    SkirtiBalsaiIsvis[ 0 ] = 0;
    SkirtiBalsaiIsvis[ 1 ] = 0;
    SkirtiBalsaiIsvis[ 2 ] = 0;

    SkirtiTaskaiIvis[ 0 ] = 0;
    SkirtiTaskaiIvis[ 1 ] = 0;
    SkirtiTaskaiIvis[ 2 ] = 0;

    DirektoriausTaskai[ 0 ] = 0;
    DirektoriausTaskai[ 1 ] = 0;
    DirektoriausTaskai[ 2 ] = 0;

    ifstream U1;
    ofstream U1rez;
    U1.open( "U1.txt" );

    if( U1.is_open( ) )
    {
        U1 >> KiekSkyriu;
        int Taskai[ KiekSkyriu ][ 3 ];
        for( int i = 0; i < KiekSkyriu; i++ )//visi skyriai
        {
            for( int e = 0; e < 3; e++ )// kiek logotipu tiek skaito
            {
                U1 >> laikina;
                SkirtiBalsaiIsvis[ e ] += laikina;
                Taskai[ i ][ e ] = laikina;
            }


            if( Taskai[ i ][ 0 ] == Taskai[ i ][ 1 ] && Taskai[ i ][ 0 ] == Taskai[ i ][ 2 ] && Taskai[ i ][ 1 ] == Taskai[ i ][ 2 ] )//Jei visi lygus, nieko neduodame
            {
            }
            else if( Taskai[ i ][ 0 ] > Taskai[ i ][ 1 ] && Taskai[ i ][ 0 ] > Taskai[ i ][ 2 ] )
                SkirtiTaskaiIvis[ 0 ] += 4;
            else if( Taskai[ i ][ 1 ] > Taskai[ i ][ 2 ] && Taskai[ i ][ 1 ] > Taskai[ i ][ 0 ] )
                SkirtiTaskaiIvis[ 1 ] += 4;
            else if( Taskai[ i ][ 2 ] > Taskai[ i ][ 0 ] && Taskai[ i ][ 2 ] > Taskai[ i ][ 1 ] )
                SkirtiTaskaiIvis[ 2 ] += 4;
            else//yra tokiu paciu
            {
                if( Taskai[ i ][ 0 ] == Taskai[ i ][ 1 ] )
                {
                    SkirtiTaskaiIvis[ 0 ] += 2;
                    SkirtiTaskaiIvis[ 1 ] += 2;
                }
                else if( Taskai[ i ][ 1 ] == Taskai[ i ][ 2 ] )
                {
                    SkirtiTaskaiIvis[ 1 ] += 2;
                    SkirtiTaskaiIvis[ 2 ] += 2;
                }
                else if( Taskai[ i ][ 0 ] == Taskai[ i ][ 2 ] )
                {
                    SkirtiTaskaiIvis[ 0 ] += 2;
                    SkirtiTaskaiIvis[ 2 ] += 2;
                }
            }
        }


        U1 >> DirektoriausTaskai[ 0 ];
        U1 >> DirektoriausTaskai[ 1 ];
        U1 >> DirektoriausTaskai[ 2 ];

        if( SkirtiTaskaiIvis[ 0 ] == SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 2 ] ||\
        SkirtiTaskaiIvis[ 1 ] == SkirtiTaskaiIvis[ 2 ] && SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 0 ] ||\
        SkirtiTaskaiIvis[ 2 ] == SkirtiTaskaiIvis[ 0 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 1 ] )
        {
            SkirtiTaskaiIvis[ 0 ] += DirektoriausTaskai[ 0 ];
            SkirtiTaskaiIvis[ 1 ] += DirektoriausTaskai[ 1 ];
            SkirtiTaskaiIvis[ 2 ] += DirektoriausTaskai[ 2 ];
        }

        if( SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 0 ] > SkirtiTaskaiIvis[ 2 ] )
            laimetojas = 1;
        if( SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 0 ] && SkirtiTaskaiIvis[ 1 ] > SkirtiTaskaiIvis[ 2 ] )
            laimetojas = 2;
        if( SkirtiTaskaiIvis[ 2 ] > SkirtiTaskaiIvis[ 1 ] && SkirtiTaskaiIvis[ 2 ] > SkirtiTaskaiIvis[ 0 ] )
            laimetojas = 3;
    }
    else
    {
        cout << "Nepavyko atidaryti failo" << endl;
    }

    U1rez.open( "U1rez.txt" );

    U1rez << SkirtiBalsaiIsvis[ 0 ] << " " << SkirtiBalsaiIsvis[ 1 ] << " " << SkirtiBalsaiIsvis[ 2 ] << endl;
    U1rez << SkirtiTaskaiIvis[ 0 ] << " " << SkirtiTaskaiIvis[ 1 ] << " " << SkirtiTaskaiIvis[ 2 ] << endl;
    U1rez << laimetojas << endl;

    U1.close( );
    U1rez.close( );
    return laimetojas;
}

Nestumkit ant kodo dešimtokas buvau tik :D. nu jau į vienuoliktą pradėjau eit atrodo.

na as tave yra panasei kaip pas greddy , nera funkciju , nors reikalavimuose yra parasytos jog reikia min 2 funkcijos , ir pas jus abu yra padarytas sitos kodas butent tam failui , as kai programuoju stengiuosi daryti universaliai pvz , pas jus yra padarytas kodas triju logotipu balams skaiciuot , as darau jog kad ir kiek logotipu butu funkcija suskaiciuotu taip pat ir sugrupem kad ir kiek butu patiekta grupiu ar logotipu rasau universalia funkcija kuri suskaiciuotu duomenis kurie buvo nuskaityti is failo

Nuoroda į komentarą
Dalintis per kitą puslapį

Nu šeip čia reik pagal reikalavimus funkcijų, tada nedariau taip. Bet pačiam egzamine tai svarbu padaryt pagal užduoti nors ji turi ir nepatogesnį variantą ar net lėtesnį. Kaip pvz kad ir šių metų egzamine turėjau atidarinėt faila kelis kartus nes nebuvo negalima naudoti struktūrų ar masyvų atlikti užduočiai ir padaryt kelias funkcijas tai kiekvienoje reik atidarinėt failą, nuskaityt informacija ir uždaryt. Na ir dar negalima buvo naudot dalybos ženklo, bet čia nesunku išspręst tą.

Redaguota , nario manogugas
Nuoroda į komentarą
Dalintis per kitą puslapį

Nu šeip čia reik pagal reikalavimus funkcijų, tada nedariau taip. Bet pačiam egzamine tai svarbu padaryt pagal užduoti nors ji turi ir nepatogesnį variantą ar net lėtesnį. Kaip pvz kad ir šių metų egzamine turėjau atidarinėt faila kelis kartus nes nebuvo negalima naudoti struktūrų ar masyvų atlikti užduočiai ir padaryt kelias funkcijas tai kiekvienoje reik atidarinėt failą, nuskaityt informacija ir uždaryt. Na ir dar negalima buvo naudot dalybos ženklo, bet čia nesunku išspręst tą.

na taip bet as mokausi ne tik egzamnams bet ir sau tiesiog bandau viska daryt kaip galima praktiskiau kad nereiktu kartot kazkokio kodo ir panasei , o siu metu egza as issiprendziau su masyvu kadangi kiek ziurejau vertinimus tai buvo tik -1 taskas o sprendimas dauk kartu lengvesnis ir paprastesnis gaunasi , nes ispresti yra dauk budu bet nesimokau tik egzaminams , mokausi sau tai nortusi tiesiog padaryti kaip geriau ir issisavint viska

Nuoroda į komentarą
Dalintis per kitą puslapį


#include <iostream>

#include <fstream>

using namespace std;

const char IN_FILE[] = "U1.txt";

const char OUT_FILE[] = "U1rez.txt";

void CalcOne(int in[], int out[]);

int CalcBest(int sum[]);

int main()

{

// Atidaromas failas

ifstream inFile(IN_FILE);

int k;

if (!inFile)

return 1;

// Skaitomas skyrių skaičius ir aprašomi pradiniai kintamieji

inFile >> k;

int all[10][3];

int last[3];

int votes[3] = { 0 };

int points[10][3] = { 0 };

// Skaitomi balsai

for (int x = 0;x < k;x++) {

inFile >> all[x][0] >>

all[x][1] >>

all[x][2];

}

// Skaitomi direktoriaus taškai

inFile >> last[0] >>

last[1] >>

last[2];

// Skaičiuojami taškai, o balsai pridedami į bendrą sumą

for (int x = 0;x < k;x++) {

votes[0] += all[x][0];

votes[1] += all[x][1];

votes[2] += all[x][2];

CalcOne(all[x], points[x]);

}

// Skaičiuojama taškų suma

int sum[3] = { 0 };

for (int x = 0;x < k;x++) {

sum[0] += points[x][0];

sum[1] += points[x][1];

sum[2] += points[x][2];

}

// Nustatomas didžiausias taškų skaičius duotas logotipui

int max = 0;

for (int x = 0;x < 3;x++) {

if (sum[x] > max)

max = sum[x];

}

/*

* Jei yra nors vienas kitas logotipas surinkęs didžiausią taškų skaičių,

* pridedami direktoriaus taškai

*/

if ((sum[0] == max && sum[1] == max) ||

(sum[0] == max && sum[2] == max) ||

(sum[1] == max && sum[2] == max)) {

sum[0] += last[0];

sum[1] += last[1];

sum[2] += last[2];

}

// Skaičiuojamas laimėjusio logotipo indeksas

int maxI = CalcBest(sum);

// Atveriamas išvesties failas

ofstream outFile(OUT_FILE);

if (!outFile)

return 1;

/*

* Išvedamas:

* 1. Susumuotų balsų skaičius

* 2. Taškai skirti visiems logotipams

* 3. Laimėjusio logotipo numeris

*/

outFile << votes[0] << " " << votes[1] << " " << votes[2] << endl <<

sum[0] << " " << sum[1] << " " << sum[2] << endl <<

(maxI + 1); // indeksai prasideda nuo 0, pridedame 1

return 0;

}

void CalcOne(int in[], int out[])

{

int ret[3] = { 0 };

int max = 0;

int indexes[3] = { -1 };

for (int i = 0;i < 3;i++) {

if (in > max) {

/*

* Jei dabartinis balsas turi aukščiausia skaičių, nustatome pirmą indeksą ir

* pašaliname visus kitus

*/

max = in;

indexes[0] = i;

indexes[1] = -1;

indexes[2] = -1;

} else if (in == max) {

/*

* Jei yra balsas kuris turi tokį patį balsų skaičius ir

* jei nenustatytas antras laimėtojas, nustatome

*/

if (indexes[1] == -1)

indexes[1] = i;

else

indexes[2] = i; // Nustatomas trečias laimėtojas

}

}

// Jei yra tik vienas laimėtojas

if (indexes[1] == -1)

out[indexes[0]] += 4;

else if (indexes[2] == -1) {

// Jei yra du laimėtojai

out[indexes[0]] += 2;

out[indexes[1]] += 2;

}

// Jei nėra laimėtojų, taškų negauna nei vienas logotipas

}

int CalcBest(int sum[])

{

int max = 0;

int maxI = 0;

// Apskaičiuojamas logotipo indeksas, kuris turi didžiausia balsų skaičių

for (int x = 0;x < 3;x++) {

if (sum[x] > max) {

max = sum[x];

maxI = x;

}

}

return maxI;

}

Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

Susiradau problema ir viska issisprendziau pakeistamad kelias if salygas , jei kam idomu visas kodas atrodo taip :

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const string duom = "U2.txt";
const string rez = "rez.txt";
const int amax = 6; // struckt masyvo dydis
const int logo = 3; // kiek logo 
int rep = 0;

struct grupes{
    int balsai[logo]; // grupiu balsai 
    int taskai[logo] = {0}; // grupiu taskai 
};

void fileRead(const string fn, grupes v[],int dir[],int &grp);
void taskai(grupes v[],int grp);
void laimetojas(grupes v[],int grp,int &win,int visib[],int visit[],int dir[]);
void fileWrite(const string fn,int visib[],int visit[],int win);

int main(){
    int dir[logo] = {0}; // direktoriaus balsai
    int visi_balsai[logo] = {0}; // visi balsai
    int visi_taskai[logo] = {0}; // visi taskai 
    int grp; // grupiu skaicius 
    int win; // laimetojas
    grupes v[amax];
    fileRead(duom,v,dir,grp);
    taskai(v,grp);
    laimetojas(v,grp,win,visi_balsai,visi_taskai,dir);
    fileWrite(rez,visi_balsai,visi_taskai,win);
    return 0;
}
// failo skaitymas , pirma grupiu skaicius tada kiekvienos grupes balsus ir galiausiai direktoriaus balsus
void fileRead(const string fn, grupes v[],int dir[],int &grp){
    ifstream fin(fn.c_str());
    fin >> grp;
    for(int a = 0; a < grp; a++){
        for(int b = 0; b < logo;b++){
            fin >> v[a].balsai[b];
        }
    }
    for(int c = 0; c < logo; c++){
        fin >> dir[c];
    }
    fin.close();
}
// skaiciuojam taskus 
void taskai(grupes v[],int grp){
    for(int a =0; a < grp;a++){// tikrinsim balsus visose grupese(6) 
        for(int b=0; b < logo; b++){ // balsu skaicius "a" grupeje
            int lg = 0;
            int dz = 0;
            for(int c = 0;c < logo;c++){// ciklas palyginti balsus
                if(v[a].balsai[b] > v[a].balsai[c]){
                    dz++; // jei b > uz 0-2 dz++ 
                }
                if(v[a].balsai[b] == v[a].balsai[c]){
                    lg++; // jei b == 0-2 lg++
                }
            }
            if(dz == logo -1){ // jeigu buvo rastas didziauses +4 taskai[b]
                v[a].taskai[b] += 4;
            }
            if(dz != logo -1 && lg == 2 && dz > 0){ // jeigu nebuvo rastas didziauses ir b nebuvo pats maziauses ir buvo kazkam lygus +2
                v[a].taskai[b] += 2;
            }
        }
    }
}

// tikrinam laimetoja
void laimetojas(grupes v[],int grp,int &win,int visib[],int visit[],int dir[]){
    for(int a =0; a < grp; a++){// skaiciuojam visus balsus ir visus taskus 
        for(int b = 0; b < logo; b++){
           visib[b] += v[a].balsai[b];
           visit[b] += v[a].taskai[b];
        }
    }
    for(int c =0; c < logo; c++){ // jieskom nugaletojo tuo paciu principu kaip ir skaiciavom taskus
        int dz = 0;
        int lg = 0;
        for(int d =0; d < logo; d++){
             if((visib[c]+visit[c]) > (visib[d]+visit[d])){
                dz++;
             }
             if((visib[c]+visit[c]) == (visib[d]+visit[d])){
                    lg++;
            }
        }
        if(dz == logo -1){
            win = c+1; // jeigu rastas cidziauses win lygus jo numeriuj +1 nes prasideda nuo 0
        }
        if(dz != logo -1 && lg == 2 && dz > 0){ // jeigu nebuvo rastas didziauses ir c nebuvo pats maziauses ir jis kazkam lygus pridedam direktorius taskus prie bendru balu
            if(rep == 0){ // kintamasis kuris leis prideti direktoriaus taskus tik vien akarta
                for(int e = 0; e < logo; e++){
                    visib[e] += dir[e];
                }
                laimetojas(v,grp,win,visib,visit,dir);// auksciau pridejom taskur ir kvieciam funkcija dar karta kad perskaiciuotu laimetoja
                rep++;// pridedam prie rep 1 kad nebutu pridedami direktoriaus balsai dar karta 
            }
        }
    }
}
// rasom duomenis i faila visi balsai \n visi taskai \n laimetojas 
void fileWrite(const string fn,int visib[],int visit[],int win){
    ofstream fout(fn.c_str());
    for(int a = 0; a < logo; a++){
        fout << visib[a] << " ";
    }
    fout << "\n";
    for(int a = 0; a < logo; a++){
        fout << visit[a] << " ";
    }
    fout << "\n";
    fout << win;
    fout.close();
}

ir gal kas gali apsviesti mane su tuo komentavimu , ar pas mane ne per dauk jo kur geriause ir kur butina komentuoti nes as stengiuosi visad viska uzkomentuoti bet nezinau ar to reikia ir ar tai nebutu perdauk kad ir egzamino metu

Redaguota , nario yahoo5000
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2834 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...