Salve a tutti sono nuovo nel forum, sono un elettrotecnico ma per curiositità ho voluto cimentarmi nel c++.
Ho iniziato un semplice programma che mi permetta dopo aver inserito i nomi e i punteggi, di sviluppare una classifica dei partecipanti. I punteggi riesco a riordinarli ,ma non riesco a trovare una soluzione perchè i nomi restino accoppiati ai punteggi.
Penso che il problema sia il fatto che per organizzare i nomi li ho dichiarati così:
char PA[21][30];
Prevedo massimo 21 partecipanti e massimo 30 caratteri per ogni nome
Questo è il codice spero che mi possiate aiutare:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <cmath>
using namespace std;
int numero_partecipanti,terminare;
//DICHIARAZIONE DECIMALI
float Pfinale[21];
char PA[21][30];
char NOME[21][30];
void Stampa_classifica();
int main ()
{
cout <<"Scrivere il numero di partecipanti:\n";
cin >> numero_partecipanti ;
int i;
for (i=0; i<numero_partecipanti; i++)
{
cout <<"\nInserisci il nome del partecipante:\n";
cin >> PA[i];
cout <<"Inserisci il punteggio finale:\n";
cin>> Pfinale[i];
Stampa_classifica();
}
void Stampa_classifica()
{
unsigned int i, scambio;
float X=0 ;
do
{
scambio = 0;
//CICLO CHE SCAMBIA PER IL NUMERO DI PARTECIPANTI
for(i = 0; i < numero_partecipanti -1; i++)
{
if(Pfinale[i] < Pfinale[i + 1])
{
//SCAMBIO NOME
int a,b,c;
for(a=0 ; a!=30 ; a++)
{
NOME[i][a]=PA[i][a];
}
for(b=0 ; b!=30 ; b++)
{
PA[i][b]=NOME[i+1][b];
}
for(c=0 ; c!=30 ; c++)
{
PA[i+1][c]=NOME[i][c];
}
X = Pfinale[i];
Pfinale[i] = Pfinale[i + 1];
Pfinale[i + 1] = X;
scambio = 1;
}
}
} while(scambio == 1);
for(i = 0; i < numero_partecipanti; i++)
{
cout << i+1 << " "<<"CLASSIFICATO";
printf("\nNome: %s",PA[i]);
printf ("\nFinale: %.2f\n", Pfinale[i]);
}
}