Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Array...
Forum - C/C++ - Array...

Avatar
mad_dog (Normal User)
Newbie


Messaggi: 7
Iscritto: 10/07/2006

Segnala al moderatore
Postato alle 17:54
Sabato, 17/03/2007
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[y]=0.0; //solo per metterci un "qualcosa" dentro così da simulare i dati

}
----------------------------

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:49
Sabato, 17/03/2007
Codice sorgente - presumibilmente C/C++

  1. void a(int x, int y){
  2. float tab[x][y]; //eccola l'incriminata!!!
  3. //...
  4. }



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:

Codice sorgente - presumibilmente C/C++

  1. 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: https://piero.dev
PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 16:31
Domenica, 18/03/2007
Poi magari correggi quel loop infinito iniziale. Poi ci sono altri punti strani.

PM Quote
Avatar
mad_dog (Normal User)
Newbie


Messaggi: 7
Iscritto: 10/07/2006

Segnala al moderatore
Postato alle 18:40
Domenica, 18/03/2007
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

PM Quote