Wiem, mam struktury, ale nie chcę tego algorytmu robić na klasie. ;)
Problem jest taki - mam studentów, którym przypisany jest numer i oceny. Trzeba posortować ich według średniej. Niestety, pewnie źle się odwołuję do pól struktury. Oto program:
#include <iostream>
#include <cstdlib>
using namespace std;
struct Student
{
int numer;
float oceny[3];
};
float srednia(struct Student s)
{return (s.oceny[0]+s.oceny[1]+s.oceny[2])/3.0;}
int main()
{
struct Student studenci[4];
studenci[0].numer = 1;
studenci[0].oceny[0] = 3; studenci[0].oceny[1] = 3.5; studenci[0].oceny[2] = 5;
studenci[1].numer = 2;
studenci[1].oceny[0] = 4; studenci[1].oceny[1] = 5; studenci[1].oceny[2] = 5;
studenci[2].numer = 3;
studenci[2].oceny[0] = 3; studenci[2].oceny[1] = 4; studenci[2].oceny[2] = 2;
studenci[3].numer = 4;
studenci[3].oceny[0] = 2; studenci[3].oceny[1] = 4; studenci[3].oceny[2] = 2;
for (int i=0; i<4; i++)
{
cout <<studenci[i].numer<<" "<<srednia(studenci[i])<<"\n";
}
for(int i=1; i<4;i++)
{
int k=i-1;
float el=srednia(studenci[1]);
for(k=i-1;k>=0 && srednia(studenci[k])>el; k--)
{srednia(studenci[k+1]) = srednia(studenci[k]);}
srednia(studenci[k+1]=el;
}
return 0;
}
Kompilator błędy pokazuje w tym miejscu:
for(int i=1; i<4;i++)
{
int k=i-1;
float el=srednia(studenci[1]);
for(k=i-1;k>=0 && srednia(studenci[k])>el; k--)
{srednia(studenci[k+1]) = srednia(studenci[k]);}
srednia(studenci[k+1]=el;
}