Mam takie zadanie:
TablicęA[n] (n-stała) wypełnić rekordami opisującymi dane o studentach, o polach (imie, rok_ur, ocena) –dane należy wczytywać z pliku o nazwiepodanej przez użytkownikajako kolejne trójki danych typu (string, int,double). Przyjąć, że w pliku jest wystarczająco dużo danych, jak w zad. 7 do lekcji 3. Następnie:
1.wydrukować w kolejnych wierszach kolejne rekordy tablicy A.
2.zamienić miejscami studenta najlepszego z najgorszym (pod względem ocen)
3.przesunąć cyklicznie o 1 miejsce w dół (w kierunku rosnącego indeksu) elementy tablicy A i ponownie ją wydrukować.
4.zamienić miejscami studentów w kolejnych paracho indeksach 0-1, 1-2, ... itd., jeśli pierwszy student z danej pary jest starszyod drugiego, po czym znów wydrukowaćtablicę.Wskazówka:w krokach 2-4 należy zamieniać ze sobą całe rekordy, stosując zmiennąpomocniczątypu rekordowego jako tymczasowy schowek. I mam problem z ostatnim punktem czyli zamianą w parach:
#include <iostream>
#include <string>
#include<cstdlib>
#include<fstream>
using namespace std;
struct Tuczen
{
string imie;
int rokUr;
float ocena;
};
void wyswietlUczen(Tuczen uczen){
cout << uczen.imie << " ";
cout << uczen.rokUr << " ";
cout << uczen.ocena << endl;
}
void wypelnijKlase(Tuczen klasa[], int N, string nazwaPliku)
{
ifstream plik (nazwaPliku.c_str());
if (plik.good()){
for (int i=0; i<N && !plik.eof(); i++){
plik >> klasa[i].imie;
plik >> klasa[i].rokUr;
plik >> klasa [i].ocena;
}
plik.close();
} else{ cout << "Blad otwarcia pliku";}
}
void wyswietlKlase(Tuczen klasa[], int N){
for (int i=0; i<N; i++){
wyswietlUczen(klasa[i]);}
}
void zamienUczniow (Tuczen klasa[], int N){
int indeksNajwyzszy=0;
int indeksNajnizszy=0;
for (int i=1; i<N; i++){
if (klasa[i].ocena>klasa[indeksNajwyzszy].ocena){
indeksNajwyzszy=i;
}
if (klasa[i].ocena<klasa[indeksNajnizszy].ocena){
indeksNajnizszy=i;
}
}
swap (klasa[indeksNajwyzszy], klasa[indeksNajnizszy]);
}
void shift (Tuczen klasa[], int N){
for (int i=N-1; i>0; i--){
swap (klasa[i], klasa[i-1]);
}
}
void najstarszy (Tuczen klasa [], int N){
int starszy=0;
int mlodszy=0;
for (int i=0; i>0; i++){
if (klasa[i].rokUr)>(klasa[i+1].rokUr){
starszy++;
}
else{
mlodszy++;
}}
}
int main()
{
const int N=3;
Tuczen klasa[N];
string nazwaPliku;
cin >> nazwaPliku;
wypelnijKlase(klasa, N, nazwaPliku);
wyswietlKlase(klasa, N);
zamienUczniow(klasa, N);
wyswietlKlase (klasa, N);
shift (klasa, N);
wyswietlKlase(klasa, N);y
najstarszy (klasa, N);
return 0;
}
nie mam pojecia jak to zrobic, pomoze ktos??