Oppure

Loading
17/03/07 16:54
mad_dog
usando questo codice... [vedi fondo] ho un problema nel creare un array di float di 2000*2000 mi butta fuori... questo codice serve per vedere il "limite" di 1447... o giù di la... ma a me servono 2000*2000 campi float al minimo!!!
spero che voi possiate aiutarmi...
---------------------------------------
#include <iostream>
using namespace std;
void a(int,int);
int main(){
int x=0,y=0;
for(int i=1;i>0;i++){
cout<<i<<endl;
a(i,i);
}

}

void a(int x, int y){
float tab[x][y]; //eccola l'incriminata!!!
for (int i=0;i<x;i++)
for (int j=0;j<y;j++)
tab[i][y]=0.0; //solo per metterci un "qualcosa" dentro così da simulare i dati

}
----------------------------
aaa
17/03/07 18:49
pierotofy
void a(int x, int y){
float tab[x][y]; //eccola l'incriminata!!!
//...
} 


Ovvio che non funziona, il compilatore che ne sa che parametri vengono assegnati a x e y in fase di esecuzione? Per fare questo genere di cose devi usare l'allocazione dinamica usando l'operatore new, una cosa simile a:

float *tab = new float[x][y];


E cambierei anche il ciclo di inizializzazione, che per quanto funzionante è poco performante. Usa la funzione memset.
Il mio blog: piero.dev
18/03/07 15:31
Reese
Poi magari correggi quel loop infinito iniziale. Poi ci sono altri punti strani.
aaa
18/03/07 17:40
mad_dog
il ciclo era solo per vedere il "limite" che il sistema accetta prima di bloccarsi...

ho risolto così

float *tab = new float[x*y];

visto che così

float *tab = new float[x][y];

mi dà degli errori...
poi per la gestione delle colonne mi arrangio :D

l'inizializzazione si che è poco performante ma come da commento era giusto per buttarci qualcosa dentro...

grazie a voi :D
aaa