Last active
June 13, 2016 16:47
-
-
Save KristupasSavickas/eca25c206b2490679205cd81906c22c5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <fstream> | |
#include <string> | |
using namespace std; | |
ifstream d ("Duomenys.txt"); | |
ofstream r ("Rezultatai.txt"); | |
struct krepsininkas { | |
string vardas; | |
double ugis; | |
int taskai; | |
}; | |
void skaityti(krepsininkas krepsininkai[], int &n, int &p, int &k); | |
int rastiAuksciausia(krepsininkas krepsininkai[], int n); | |
int rastiRezultatyviausia(krepsininkas krepsininkai[], int n); | |
void salinti(krepsininkas krepsininkai[], int &n, int id); | |
void atrinktiTikamus(krepsininkas krepsininkai[], int &n, int p, int k); | |
void rasyti(krepsininkas krepsininkai[], int n); | |
int main() | |
{ | |
int n, | |
p, // Kiek procentu mazesnis gali buti uz auksciausia | |
k; // Kiek procentu maziau tasku gali buti pelnes uz pelningiausia | |
krepsininkas krepsininkai[15]; | |
skaityti(krepsininkai, n, p, k); | |
atrinktiTikamus(krepsininkai, n, p, k); | |
rasyti(krepsininkai, n); | |
return 0; | |
} | |
void skaityti(krepsininkas krepsininkai[], int &n, int &p, int &k) | |
{ | |
d >> n; | |
for (int i = 0; i < n; i++) | |
{ | |
d >> krepsininkai[i].vardas >> krepsininkai[i].ugis >> krepsininkai[i].taskai; | |
} | |
d >> p >> k; | |
} | |
int rastiAuksciausia(krepsininkas krepsininkai[], int n) | |
{ | |
int auksciausioId = 0, | |
auksciausias = 0; | |
for (int i = 0; i < n; i++) | |
{ | |
if (krepsininkai[i].ugis >= auksciausias) | |
{ | |
auksciausias = krepsininkai[i].ugis; | |
auksciausioId = i; | |
} | |
} | |
return auksciausioId; | |
} | |
int rastiRezultatyviausia(krepsininkas krepsininkai[], int n) | |
{ | |
int rezultatyviausioId = 0, | |
rezultatyviausias = 0; | |
for (int i = 0; i < n; i++) | |
{ | |
if (krepsininkai[i].taskai >= rezultatyviausias) | |
{ | |
rezultatyviausias = krepsininkai[i].taskai; | |
rezultatyviausioId = i; | |
} | |
} | |
return rezultatyviausioId; | |
} | |
void salinti(krepsininkas krepsininkai[], int &n, int id) | |
{ | |
for (int i = id; i < n-1; i++) | |
{ | |
krepsininkai[i] = krepsininkai[i+1]; | |
} | |
n--; | |
} | |
void atrinktiTikamus(krepsininkas krepsininkai[], int &n, int p, int k) | |
{ | |
int auksciausias, | |
rezultatyviausias, | |
minUgis, | |
minTaskai; | |
auksciausias = rastiAuksciausia(krepsininkai, n); | |
rezultatyviausias = rastiRezultatyviausia(krepsininkai, n); | |
minUgis = krepsininkai[auksciausias].ugis - krepsininkai[auksciausias].ugis * p / 100; | |
minTaskai = krepsininkai[rezultatyviausias].taskai - krepsininkai[rezultatyviausias].taskai * k / 100; | |
for (int i = 0; i < n; i++) | |
{ | |
// Pasalinti is masyvo, jei neatitiko reikalavimu | |
if ((krepsininkai[i].ugis < minUgis) || (krepsininkai[i].taskai < minTaskai)) | |
{ | |
salinti(krepsininkai, n, i); | |
} | |
} | |
} | |
void rasyti(krepsininkas krepsininkai[], int n) | |
{ | |
for (int i = 0; i < n; i++) | |
{ | |
r << krepsininkai[i].vardas << " " << krepsininkai[i].ugis << " " << krepsininkai[i].taskai << endl; | |
} | |
r.close(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment