Skip to content

Instantly share code, notes, and snippets.

@KristupasSavickas
Last active June 13, 2016 16:47
Show Gist options
  • Save KristupasSavickas/eca25c206b2490679205cd81906c22c5 to your computer and use it in GitHub Desktop.
Save KristupasSavickas/eca25c206b2490679205cd81906c22c5 to your computer and use it in GitHub Desktop.
#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