Infatti avevo usato quello
Utilizzando comunque un'implementazione del BubbleSort che non conoscevo (trovata online) ora "sembra" ordinare tutto ... il problema è che quando vado a visualizzare gli elementi mi visualizza solo il primo e non capisco perchè
Comunque ecco il codice (mancherebbe la parte della media ma quella è semplice).
codice:
#include <iostream>
#include <string>
#define MAX 100
using namespace std;
struct struttura
{
string a;
int b;
int c;
int d;
};
struttura read() //Funzione che leggi i dati e li inserisce all'interno della struttura che a sua volta è contenuta nell'array
{ //I valori di int devono essere compresi fra 1 e 10, mentre la stringa deve esssere una parola, per questo ho usato cin
struttura st;
cout << "Inserisci il valore della stringa: \n";
cin >> st.a;
do{
cout << "Inserisci il primo intero: \n";
cin >> st.b;} while(st.b<1 || st.b>10);
do {cout << "Inserisci il secondo intero: \n";
cin >> st.c;} while(st.c <1 || st.c >10);
do {cout << "Inserisci il terzo intero: \n";
cin >> st.d;} while(st.d<1 || st.d>10);
return st;
}
void sortB(struttura a[], int n) {
{
int i, last;
struttura tmp;
int high=n;
while (high >= 0)
{
last = -1;
for (i=0; i<high; i++)
{
if (a[i].a>a[i+1].a)
{
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
last = i;
}
}
high = last;
}
}
}
void print(struttura *array,int length)
{
for(int i=0;i<length;i++){
cout<<array[i].a<<endl;}
}
int main()
{
int n;
cout << "Inserisici il numero di valori da utilizzare (massimo 100) ...\n";
do{
cin>>n;
}while (n<=0 || n>MAX);
struttura t[n];
for(int i=0;i<n;i++){
cout << "\nElemento " << i+1 << ":\n";
t[i]=read();}
sortB(t,n);
print(t,n);
return 0;
}