|
|
|
![]() |
|
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 22: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: 22:44.