[C] Problema con gli array

SimoneSc1
Salve ho un esercizio nel quale mi viene richiesto questo:

"Attraverso una funzione denominata genconv generare in maniera casuale una coppia di coordinate
$(x_i, y_i)$, e salvarle in un vettore denominato pcoord di tipo e dimensioni opportune."

Io per generare le coordinate x e y e assegnarle a un vettore ho sempre utilizzato due array separati. In questo caso come devo fare? Utilizzare un array bidimensionale?

Grazie e buona serata.

Risposte
Super Squirrel
"SimoneSc":
In questo caso come devo fare? Utilizzare un array bidimensionale?

Ciao, effettivamente la cosa più semplice potrebbe essere utilizzare una matrice 2xN, ma volendo puoi anche utilizzare un vettore di 2N elementi in cui le coppie di coordinate possono essere associate in vario modo:
- x y x y x y x y x y
- x x x x x y y y y y
...

P.S.
Non hai ancora studiato le struct?

SimoneSc1
No purtroppo non l'ho ancora fatte. Credo che proverò a salvare in un unico array perché poi devo verificare che queste coordinate rispetto determinate condizioni e non saprei come farlo con un array bidimensionale :(

Infatti dovrei riuscire a scrivere una funzione che mi genera delle coordinate x e y casuali e le salva appunto in questo array chiamato pcoord e poi dovrei scrivere un'altra funzione che prende in input questo array e verifica delle condizioni.

Se mi deste un input dal quale partire ve ne sarei grato!

vict85
In sostanza suppongo che tu debba creare una funzione dichiarata come:
void genconv( unsigned int N, int pcoord[], unsigned int pcoordSize );

o anche senza [inline]pcoordSize[/inline]. Sbaglio? Il valore di ritorno potrebbe anche essere qualche forma di segnalazione di eventuali errori.

Nota che si deve avere [inline]N * 2 <= pcoordSize[/inline].

Per usare un array di vettori bidimensionali, basterebbe esare:
void genconv( unsigned int N, int pcoord[][2], unsigned int pcoordSize );


Dal punto di vista del codice assembly creato non dovrebbe cambiare nulla.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.