|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
[C++] Problemi Dichiarazione Array Come Variabili Globalu
Salve a tutti,
ho compilato questo programma allo scopo di ordinare un gruppo di dati immessi (nome-cognome atleti e il tempo della loro prestazione) in ordine crescente. Purtroppo quando vado a dichiarare le due array, una contenente il nome-cognome dell'atleta (è una matrice di tipo char), l'altra il tempo della prestazione di ogni singolo, come variabili globali Dev-C++ mi da errore ("variable-size type declared outside of any function"). Ecco il codice: Codice:
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int MAX;
char atl[MAX][50];
double tempo[MAX];
void InserisciDati();
void Classifica();
void PubblicaClassifica();
void Scambia(char, char);
main(){
cout<<"GARA DI CORSA CAMPESTRE\n\n\n";
cout<<"Inserire Numero Partecipanti: ";
cin>>MAX;
InserisciDati();
cout<<"GARA DI CORSA CAMPESTRE\n\n\nPartecipanti: "<<MAX;
cout<<"Classifica Finale:";
Classifica();
PubblicaClassifica();
getch();
}
void InserisciDati(){
char testo1, testo2;
for(int i=1; i<=MAX; i++){
cout<<"\n\nInserire Nome "<<i<<"° Classificato: ";
cin>>testo1;
cout<<"\nInserire Cognome "<<i<<"° Classificato: ";
cin>>testo2;
testo1 = testo1 + ' ' + testo2;
atl[i][50]=testo1;
cout<<"\nInserire Tempo: ";
cin>>tempo[i];
}
}
void Classifica(){
for(int i=2; i<=MAX;i++)
for (int j=1; j<=MAX;j++)
if (atl[j][50] < atl[i][50]) {
Scambia(atl[i][50], atl[j][50]);
}
}
void Scambia(char a, char b){
char c;
c=a;
a=b;
b=c;
}
void PubblicaClassifica(){
for (int i=0; i<=MAX; i++)
(i=0) ? cout<<"Nome Cognome Tempo" : cout<<atl[i]<<" "<<tempo[i];
}
Grazie a tutti. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Mar 2005
Città: Lecce
Messaggi: 195
|
il problema è nel fatto che non dichiari la dimensione degli array ma assegni la dimensione MAX che leggi poi da tastiera ma C (ansi) non lo consente. Per ovviare al problema dovresti:
a) dare una grandezza al posto di MAX b) Dare una Grandezza Base e poi allocare dinamicamente il resto c) con o standard C99 si possono dichiarare array con dimensione nota a runtime ma li dipende dal compilatore che usi, in generale dovresti mettere un Flag per dirgli di usare il C99 e non l'89 come standard
__________________
Albert Einstein disse " Solo due cose sono infinite: l'universo e la stupidità umana. Ma non sono sicuro della prima " e aveva ragione Ho Contrattato con gli utenti "carbv" "(zar)sheva" "rasbeetle" Ultima modifica di radoen : 10-03-2011 alle 23:55. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Potresti ovviare al problema usando direttamente le collezioni dinamiche del C++
__________________
iMac 27" 5K |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:30.



















