| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  04-10-2011, 15:52 | #1 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
				
				[c++] Definizioni "variabili"
			 
		Ciao, sto lavorando su un sw, in c++ sin ora ho lacoratu su un vettore da 50 elementi quindi avevo: Codice: #define X 50 int Vect[X]; | 
|   |   | 
|  04-10-2011, 17:27 | #2 | 
| Senior Member Iscritto dal: Mar 2007 Città: Milano Beach 
					Messaggi: 1696
				 | 
				__________________ ~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO | 
|   |   | 
|  04-10-2011, 22:17 | #3 | 
| Senior Member Iscritto dal: Jan 2007 
					Messaggi: 2267
				 | 
		Come linkato da GByTe87 il modo migliore per creare array la cui dimensione sia nota solo a tempo di esecuzione è allocarli dinamicamente sullo heap.
		 
				__________________ Concluso con:... | 
|   |   | 
|  04-10-2011, 22:18 | #4 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
		Grazie mille, domani provo e ti faccio sapere    | 
|   |   | 
|  06-10-2011, 15:03 | #5 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 |  Mi sono impegnato ma non riesco   Il fatto è questo, se sotto gli include tolgo la definizione dei vettori, tutte le funzioni che richiamano quei dati non restituiscono errore ed ovviamente non parte nada. mi aiutate con un esempio. diciamo per esempio io ora abbia Codice: #include ...
...
#define x 5
#define y 6
#define z x*y
unsigned short vett1[x];
unsigned short vett2[z];
unsigned short vett3[z*3];
...
void prova (void)
{
for (i=0;i<z*3;i++)
{vett3[i]=i;}
}ovviamente il tutto deve continuare ad essere globale perchè mi servono anche in altre finzioni... grazie | 
|   |   | 
|  06-10-2011, 15:18 | #6 | 
| Junior Member Iscritto dal: Nov 2008 
					Messaggi: 17
				 | 
		Potresti optare per il passaggio dei parametri attraverso le funzioni, cosi eviti di usare le definizioni globali =). Indi o opti per una cosa simile: Codice: ....
int main(void)
   { 
       int dim_array[3];
       
       (Qui chiedi di inserire i sati e li inserisci in dim_array[0] , dim_array[1] e dim_array[2])
       .......
       .......
       funzione_uno( parm , dim_array )
       funzione_due( parm , dim_array )
       .......
       .......
       return 0;
   }
				__________________ ._. | 
|   |   | 
|  06-10-2011, 15:31 | #7 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
		in questo momento dovrei variare troppe cose per passare i parametri da funzione...
		 | 
|   |   | 
|  06-10-2011, 16:12 | #8 | 
| Junior Member Iscritto dal: Nov 2008 
					Messaggi: 17
				 | 
		
Rimane comunque la soluzione piu' elegante secondo me... e poi hai la possibilita' di modificare i parametri in un tempo successivo
		 
				__________________ ._. | 
|   |   | 
|  06-10-2011, 17:30 | #9 | |
| Senior Member Iscritto dal: Oct 2005 
					Messaggi: 3306
				 | Quote: 
   Ripremesso che, parlando di C++, la soluzione migliore è usare std::vector, binaramente compatibile con gli array. Nel tuo caso devi dichiarare le tue variabili come puntatori a short e poi usare new per allocare la dimensione che più ti aggrada. | |
|   |   | 
|  06-10-2011, 19:22 | #10 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
		Alla fine ho risolto con le malloc... Codice: #include ...
....
unsigned short *vett1;
int x;
int y;
...
int main(void)
{
...
x=20;
vett1 = (unsigned short *) malloc(x*sizeof(unsigned short));
...
} | 
|   |   | 
|  06-10-2011, 19:24 | #11 | 
| Senior Member Iscritto dal: Mar 2007 Città: Milano Beach 
					Messaggi: 1696
				 | 
		Questa è la soluzione ideale; rimane quanto detto dagli altri sulle variabili globali.    
				__________________ ~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO | 
|   |   | 
|  06-10-2011, 19:27 | #12 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
		grazie mille    | 
|   |   | 
|  06-10-2011, 19:33 | #13 | 
| Senior Member Iscritto dal: Mar 2007 Città: Milano Beach 
					Messaggi: 1696
				 | 
		Dimenticavo; in C++ sarebbe meglio usare new e delete invece di malloc e free. Soprattutto se la usi per istanziare classi (invece di tipi primitivi). E concordo quanto detto sui std::vector, se puoi usali. 
				__________________ ~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO | 
|   |   | 
|  06-10-2011, 19:35 | #14 | 
| Member Iscritto dal: Oct 2005 
					Messaggi: 228
				 | 
		ok grazie, per ora vorrei solo funzionasse il tutto, poi mi occupo delle migliorie quindi sempre buono a sapersi... solo che le new le devo studiare... | 
|   |   | 
|  06-10-2011, 19:38 | #15 | |
| Senior Member Iscritto dal: Mar 2007 Città: Milano Beach 
					Messaggi: 1696
				 | Quote: 
   
				__________________ ~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO | |
|   |   | 
|  07-10-2011, 01:21 | #16 | 
| Senior Member Iscritto dal: Oct 2005 
					Messaggi: 3306
				 | 
		
Al di là della battuta, in un ambiente lavorativo come lo fai la prima volta e come te lo terrai tutta la vita. Nessuno ti pagherà mai per ottimizzare un programma, a nessuno gliene frega niente dell'ottimizzazione, basta che funzioni. Più facile che ti chiedano altre funzionalità, se non proprio altri software... Mai trovato un committente a cui gliene possa fregare qualcosa se il software è composto da un main di 10000 righe oppure strutturato a pattern. Io al contrario sono un committente a cui interessa particolarmente   | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 17:29.









 
		 
		 
		 
		









 
  
 



 
                        
                        










