1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
using namespace std;
void readScore(ifstream & fin, double & x, int & y, string & z);
double median(double arr[], int n);
void swap(int & a, int & b);
int minIndex(double k[], int size, int startIndex);
void selectionSortAll(double k[], int l[], int size);
void selectionSortY(int l[], int size);
struct XYZ
{
double varx[4];
int vary[4];
string varz[4];
};
int main()
{
double x;
int y;
string z;
ofstream fout;
ifstream fin;
fin.open("struct fstream.txt");
XYZ calcX;
XYZ calcY;
XYZ calcZ;
double scoreSumX = 0;
int scoreSumY = 0;
for (int i = 0; i < 4; i++)
{
readScore(fin, x, y, z);
calcY.vary[i] = y;
calcX.varx[i] = x;
calcZ.varz[i] = z;
cout << calcX.varx[i] << " ";
cout << calcY.vary[i] << " ";
cout << calcZ.varz[i] << endl;
/*scoreSumX += calcX.varx[i];
scoreSumY += calcY.vary[i];
cout << "Current sum: " << scoreSumX << endl;
if (i >1)
{
cout << "Current average: " << scoreSumX / (i + 1) << endl;
}*/
}
cout << "" << endl;
selectionSortAll(calcX.varx, calcY.vary, 4);
for (int i = 0; i < 4; i++) {
cout << calcX.varx[i] << " ";
cout << calcY.vary[i] << " ";
cout << calcZ.varz[i] << endl;
}
cout << median(calcX.varx, 4);
fin.close();
fout.close();
return 0;
}
void readScore (ifstream & fin, double & x, int & y, string & z)
{
fin >> x >> y >> z;
}
double median(double arr[], int n)
{
if (n % 2 == 0)
return arr[n / 2];
else
return arr[n / 2];
}
void swap(int & a, int & b) {
int temp = a;
a = b;
b = temp;
}
int minIndex(double k[], int size, int startIndex) {
int minI = startIndex;
for (int i = startIndex; i < size; i++) {
if (k[i] < k[minI]) {
minI = i;
}
}
return minI;
}
void selectionSortAll(double k[], int l[], int size) {
int minI;
for (int startIndex = 0; startIndex < size; startIndex++) {
minI = minIndex(k, size, startIndex);
swap(k[startIndex], k[minI]);
swap(l[startIndex], l[minI]);
}
}
void selectionSortY(int l[], int size) {
int minI;
for (int startIndex = 0; startIndex < size; startIndex++) {
minI = minIndex(l, size, startIndex);
swap(l[startIndex], l[minI]);
}
}
|