Newsgroup: it.comp.lang.c++
Titolo: dichiarazione matrici

Salve,
è noto a tutti, o quasi che:
mymatrice[4][5];
serve a dichiarare un array bi dimensionale.
Ma se io devo usare delle variabili...
mymatrice[righe][colonne];
dove righe e colonne sono i valori 4 e 5, ma in compilazione
viene restituito un errore che dice che si devono usare delle costanti,
quindi mi viene da pensare che si debba usare:
const int righe=a+b/c;
const int colonne=r+t-u;
Ma il compilatore mi restituisce il medesimo errore: vuole costanti... 
come si puo risolvere tale problema??
Grazie.


solo se a,b,c,r,t,u sono anch'esse delle costanti! il valore di righe e
colonne DEVE essere noto al momento della compilazione
non al momento dell'esecuzione. NEl tuo caso devi utilizzare gli operatori
allocazione dinamica 'new' e 'delete', o meglio ancora
e più semplicemente la classe vector<> della libreria standard che ti
permette di ottenere la stessa cosa che tu vuoi fare
e un sacco di altre.
--
-------------
Lello Mele
Via San Sebastiano, 22
84036 Sala Consilina (SA)
P.Tel.:0347/643.35.25
HOMEPAGE:
http://www.programmazione.it
http://tcp.come.to
eMAIL:
v...@libero.it
me...@programmazione.it
PROFILE:
http://www.programmazione.it/index.php?entity=eauthor&idAuthor=83
-------------
"Esistono due modi per elaborare il progetto di un software.
 Il primo consiste nel renderlo semplice al punto tale che non
 manifesti lacune evidenti. Il secondo consiste nel renderlo
 complicato al punto tale che non manifesti lacune evidenti.
 Il primo metodo e' di gran lunga piu' difficile." [C.A.R. Hoare]

 e un sacco di altre.
ok più o meno ho capito:
dubbio 1- maggiori info sulla classe vector li trovo...
dubbio 2- dicendo libreria standard si intende la libreria...  ???.h
dubbio 3- con gli operatori new e delete come si affronterebbe il problema??
Grazie.

 come si puo risolvere tale problema??
Con l'allocazione dinamica o con il tipo std::vector.
EMG

 
   C++ FAQ Lite
   [16.15] How do I allocate multidimensional arrays using new?
 
http://new-brunswick.net/workshop/c++/faq/freestore-mgmt.html
Max

 dubbio 3- con gli operatori new e delete come si affronterebbe il
problema??
dubbio mio - ma hai postato sul giusto ng :-) ?? non sai praticamente
"nulla" !!
dubbio 1 : x la classe vector qualsiasi libro sul C++ e forse anche
sull'ottimo corso di Paolo Marotta su 
www.programmazione.it
dubbio 2: la libreria standard è l'insieme delle librerie presenti in ogni
compilatore C++ aderente allo standard ISO per il C++. Dunque si presume che
usando una classe della libreria standard si possa compilare con qualsiasi
compilatore che si attiene allo standard (per l'appunto). Ma la libreria
standard non ha nulla a che fare con i '.h' che sono si anche i file header
di una
libreria standard, ma quella del C non quella del C++ (in C++ il .h non ci
vuole).
dubbio 3: sempre sul corso di Marotta (ma compra il libro "C++ corso di
programmazione" 3a ediz.,S.B. Lippmann, Addison-Wesley)
eccoti un esempio comunque:
#include <iostream>
#include <vector>
using namespace std;
main ()
{
        int a=10;
        int b=20;
        int *p= new int[a,b]; // definisce un array dinamico di dimension
a*b
        delete[] p;    //cancella un array dalla memoria
        vector<int> v(10); //definisce un vettore di 10 elementi, ma poteva
essere anche vuoto (si aggiungevano poi)
        cout << "\npunto 1: " << v.size();
        v.push_back(56);
        v.push_back(43);
        cout << "\npunto 2: " << v.size();
        v.clear();
        cout << "\npunto 3: " << v.size();
        cout << v.size();
        v.push_back(55);
        v.push_back(40);
        cout << "\npunto 4: " << v.size();
}