Oppure

Loading
08/12/06 20:01
Raelitian
Ciao a tutti ragazzi, sono un programmatore alle primissime armi, e sono da molto tempo fermo su un problema che non riesco a risolvere.. praticamente non riesco a capire come posso inserire una matrice come parametro di ingresso all'interno di una funzione.

Devo scrivere un programma che per prima cosa legge i valori inseriti via tastiera in un array bidimensionale, e poi deve individuare la riga della matrice stessa che ha la somma dei valori maggiore delle altre. Tutto bene, faccio la matrice e il programma, l'unica cosa che nn riesco a capire è come inserire nella funzione i valori dell'array che ho inserito.

Mi sono un po informato e ho visto che non si può inserire una matrice all'interno della dichiarazione, e a quanto ho capito bisognerebbe utilizzare gli array dinamici mediante i puntatori e le funzioni malloc e calloc.. ci ho provato ma non ho ben capito come creare un vettore bidimensionale.. la sintassi

malloc (k*sizeof(int))

all'interno della funzione mi funge solo nel caso di un vettore monodimensionale.. come posso utilizzarle nel mio caso? e c'è qualke altro odo per introdurre i valori della matrice nella funzione, per poterli usare nel confronto?

spero di essere stato chiaro e che la domanda non sia troppo stupida.. grazie ancora ;)
aaa
08/12/06 22:49
Fr3d3R!K
qui lo spiega
support.microsoft.com/kb/205277/…
ciao
p.s. devi scorrere un pò la pagina perchè prima spiega come fare col visual basic e poi col c/c++

pp.ss.se intendi proprio non toccare il basic vedi p2pforum.it/forum/…
Ultima modifica effettuata da Fr3d3R!K 08/12/06 22:51
aaa
09/12/06 19:49
Raelitian
grazie mille, si ho letto e ho capito che devo utilizzare un puntatore alla prima posizione dell'array.. l'unica cosa che xò nn ho capito è come alla fine richiamare la funzione. Nel senso che, dopo aver dichiarato tutto, per utilizzare la funzione e trovare il valore cercato, la sintassi

risultato = nome_funzione ( parametro1, parametro2, *matrice[] )

non funge, mi da sempre un errore per quanto riguarda la scrittura della matrice.. com'è che devo scrivere quindi? grz ancora
aaa
09/12/06 20:46
Fr3d3R!K
dichiara la matrice come variabile globale così non hai bisogno di passarla a questo punto... :k:
aaa
11/12/06 19:09
Raelitian
allora, mi sto terribilmente incasinando purtroppo, quindi provo a riassumere tutta la questione.. niente io ho fatto il programma e l'algoritmo nella funzione l'ho testato al di fuori di essa, e funziona. Per quanto riguarda il prototipo della funzione stessa, ho letto il link che mi hai proposto e quindi ho scritto

int rigamax ( int rig, int col, int **mat )

con int **mat che sarebbe il puntatore al puntatore che mi richiama la matrice. Quindi ho scritto alla fine del programma che

rmax = rigamax ( rig, col, mat );

e il compilatore nn mi da finalmente + quell'errore. Quello che però mi da errori (non di sintassi ma proprio nel programma) è secondo me la dichiarazione della matrice.. quindi riassumendo il tutto quello che vorrei sapere è come dovrei dichiararla? con gli array dinamici malloc-calloc non riesco a creare vettori bidimensionali e non so cosa sbaglio nella sintassi, con gli array statici [][] non mi funge..

grz ancora
Ultima modifica effettuata da Raelitian 11/12/06 19:09
aaa
11/12/06 22:06
pierotofy
Se usi il C++ è semanticamente scorretto usare gli operatori malloc e free del C ANSI.

Prova con:
int *mioarray;
mioarray = new int[x][y];
Ultima modifica effettuata da pierotofy 11/12/06 22:06
Il mio blog: piero.dev
12/12/06 18:05
Fr3d3R!K
esattamente! :) :k:
aaa
16/12/06 17:11
Raelitian
mi da un errore facendo cosi.. x esempio scrivendo

int *mat;
mat = new int[x][y];

mi dice :

`y' cannot appear in a constant-expression

e mettendoci un numero, che so 10, mi dice :

cannot convert `int (*)[10]' to `int*' in assignment

possibile? :d
aaa