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 bidimens. come parametro in una funzione
Forum - C/C++ - Array bidimens. come parametro in una funzione

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Raelitian (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/12/2006

Segnala al moderatore
Postato alle 21:01
Venerdì, 08/12/2006
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 ;)

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 23:49
Venerdì, 08/12/2006
qui lo spiega
http://support.microsoft.com/kb/205277/it
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 http://www.p2pforum.it/forum/showthread.php?t=100013

Ultima modifica effettuata da Fr3d3R!K il 08/12/2006 alle 23:51
PM Quote
Avatar
Raelitian (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/12/2006

Segnala al moderatore
Postato alle 20:49
Sabato, 09/12/2006
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

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 21:46
Sabato, 09/12/2006
dichiara la matrice come variabile globale così non hai bisogno di passarla a questo punto... :k:

PM Quote
Avatar
Raelitian (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/12/2006

Segnala al moderatore
Postato alle 20:09
Lunedì, 11/12/2006
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 il 11/12/2006 alle 20:09
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:06
Lunedì, 11/12/2006
Se usi il C++ è semanticamente scorretto usare gli operatori malloc e free del C ANSI.

Prova con:
Codice sorgente - presumibilmente C/C++

  1. int *mioarray;
  2. mioarray = new int[x][y];


Ultima modifica effettuata da pierotofy il 11/12/2006 alle 23:06


Il mio blog: https://piero.dev
PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 19:05
Martedì, 12/12/2006
esattamente! :) :k:

PM Quote
Avatar
Raelitian (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/12/2006

Segnala al moderatore
Postato alle 18:11
Sabato, 16/12/2006
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

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 19:50
Sabato, 16/12/2006
devi mettere dentro le parentesi dei numeri!
altrimenti dichiari delle costanti x e y alla quali assegni dei valori e solo allora potrai scrivere in quel modo...
Dichiarazione costanti + matrice
Codice sorgente - presumibilmente C++

  1. #define X 10
  2. #define Y 20
  3. void main(){
  4. //se non dichiari le costanti al posto di X e Y ci
  5. //devi mettere 10 e 20 così int matrice[10][20];
  6. int matrice[X][Y];



Ultima modifica effettuata da Fr3d3R!K il 16/12/2006 alle 19:52
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo