python-dirbtuves / it-brandos-egzaminai

Informacinių technologijų brandos egzaminų, programavimo praktinių užduočių sprendimai
GNU Affero General Public License v3.0
13 stars 13 forks source link

2012/pagrindinis/u1 - Krepšinis #6

Open dz0 opened 9 years ago

dz0 commented 9 years ago
// galima ir lakoniškiau
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cmath>

using namespace std;
struct krepsininkas{
    int nr;
    int t; //zaisti arba ilsetiesi laikai
    int time[40];

};
  int n;
void read(struct krepsininkas *kr[]){
    ifstream duomenys ("U1.txt");
    duomenys>>n;
    for (int i=0; i<n; i++){
        duomenys>>kr[i]->nr>>kr[i]->t;
        for(int j=0; j<(kr[i]->t); j++){
            duomenys>>kr[i]->time[j];
        }
    }
    duomenys.close();
}
void penketas (struct krepsininkas kr[], int n, int stpenketas[]){
     int m=0;
     for(int i=0; i<n; i++){
        if(kr[i].time[0]>0){
            stpenketas[m]=kr[i].nr;
            m++;
        }
     }
    int tmp;
    for(int i=0; i<5; i++){
        for(int j=i+1; j<5; j++){
                if(stpenketas[i]>stpenketas[j]){
                    tmp=stpenketas[j];
                    stpenketas[j]=stpenketas[i];
                    stpenketas[i]=tmp;
                }

        }
    }

}
void play(struct krepsininkas kr[], int zaide[], int n){
    int tm;
    for(int i=0; i<n; i++){
        tm=kr[i].t;
        for(int j=0; j<tm; j++){
                if( (kr[i].time[j])>0 ){
                    zaide[i]=zaide[i]+kr[i].time[j];
                }
        }
    }
}
void sit(struct krepsininkas kr[], int sedejo[], int n){
    int tm;
    for(int i=0; i<n; i++){
        tm=kr[i].t;
        for(int j=0; j<tm; j++){
                if( (kr[i].time[j])<0 ){
                    sedejo[i]=sedejo[i]-kr[i].time[j];
                }
        }
    }
}

int maksimalus(int a[], struct krepsininkas kr[]){
int indeksas, maks=0;;
    for(int i=0; i<n; i++){
        if(maks<a[i]){
            indeksas=i;
            maks=a[i];
        }
        else if(maks==a[i] && kr[indeksas].nr>kr[i].nr){
            indeksas=i;
        }
    }

return indeksas;
}
int main(){
    //ifstream duomenys ("U1.txt");
      ofstream rezultatai("U1rez.txt");
    int zaide[12],sedejo[12], stpenketas[5]; //pretty obvious kintamieji
    for(int i=0; i<12; i++){
        zaide[i]=0;
        sedejo[i]=0;
    }
    struct krepsininkas kr[12], *pkr[12]; //strukturu masyvas ir pointeris i sio tipo struktura
    for(int i=0; i<12; i++){ //cikliukas kuris i pointeriu masyva susiraso strukturu adresus
        pkr[i]=&kr[i];
    }
    read(pkr);
    penketas(kr, n, stpenketas);
    for(int i=0; i<5;i++){
        rezultatai<<stpenketas[i]<<" ";
    }
    rezultatai<<endl;
    play(kr, zaide, n);
    sit(kr, sedejo, n);
    int indeksas;
    indeksas=maksimalus(zaide, kr);
    rezultatai<<kr[indeksas].nr<<" "<<zaide[indeksas]<<endl;
    indeksas=maksimalus(sedejo, kr);
    rezultatai<<kr[indeksas].nr<<" "<<sedejo[indeksas]<<endl;
    rezultatai.close();
return 0;
}