Witam, mam do napisania program, który posortuję strukturę według imienia i spotykam się z niespotykanym dla mnie błędem.
//Header.h
#ifndef Header.h
#define Header_h
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
struct ocena
{
string przedmiot;
float wartosc;
};
struct indeks
{
string imie;
string nazwisko;
ocena oceny[15];
int n;
};
void sortowanie(indeks *o, int &n);
void wyswietl(const indeks& o, int &ile);
void pobierz( indeks* o);
#endif
#include "Header.h"
void sortowanie( indeks* o, int &n)
{
indeks zmienna;
for(int i=1; i<=n; i++)
{
for(int j=0; j<3; j++)
{
if (o[i].imie[j]<o[i-1].imie[j])
{
zmienna=o[i];
o[i]=o[i-1];
o[i-1]=zmienna;
break;
}
else if(o[i].imie[j]>o[i-1].imie[j])
break;
}
}
}
void pobierz( indeks* o)
{
int ile;
cout<<"Podaj imie i nazwisko: ";
cin >>o->imie>>o->nazwisko;
o->n=0;
cout<<"Podaj ile ocen chcesz pobrac: ";
cin >> ile;
for(int i=0;i<ile;i++)
{
cout<<"Najpierw przedmiot, potem ocena ";
cin>>o->oceny[o->n].przedmiot>>o->oceny[o->n].wartosc;
o->n++;
}
}
void wyswietl(const indeks& o, int &ile)
{
cout<<o.imie<<" "<<o.nazwisko;
cout<<endl;
int a=o.n-1;
for(int i=0; i<ile; i++)
{
cout<<o.oceny[a].przedmiot<<" "<<o.oceny[a].wartosc;
a--;
cout<<endl;
}
}
#include "Header.h"
int main()
{
int ile;
int n=0;
char wybor;
indeks indeksy[30];
for(;;)
{
cout<<"Aby pobrac dane wcisnij: 1"<<endl;
cout<<"Aby wyswietlic dane wcisnij: 2"<<endl;
cout<<"Aby posortowac wedlug imienia: 3"<<endl;
cout<<"Twoj wybor to: ";
cin>>wybor;
switch (wybor)
{
case '1':
{
system("cls");
pobierz(&indeksy[n]);
n++;
system("cls");
}
break;
case '2':
{
int ile;
cout<<"Podaj ile przedmiotow chcesz wyswietlic: ";
cin>>ile;
for (int j=0; j<=n-1; j++)
{
wyswietl(indeksy[j], ile);
}
system("pause");
} break;
case '3':
{
sortowanie(&indeksy[n-1], n);
system("cls");
}break;
default:
exit(0);
}
}
system("cls");
}