Salve sono messy e frequento il primo anno di informatica presso uniparthenope, sono nuovo del forum. Ho letto le regole e spero di non vìolarne alcuna con questo post.
Allora devo fare questo esercizio:
" Creare una matrice NxM di interi(con N e M definiti dall'utente). Impostare la matrice con tutti gli elementi a '0'. Definire un puntatore ad interi che punti all'elemento (0,0) della matrice. Scrivere un algoritmo che sposti il puntatore di i caselle in basso e di j caselle a destra ( dove i e j sono numeri casuali compre tra 0 e N e tra 0 e M). Ripetere l'operazione di spostamento del puntatore un numero di volte definito dall'utente e incrementare di 1 ogni elemento della matrice che viene puntato dal puntatore. Stampare le coordinate di tutti i movimenti del puntatore e la matrice ottenuta alla fine degli spostamenti del puntatore."
Il problema è che non mi fa modificare gli elementi della matrice quando creo un nuovo puntatore con coordinate random.
Il più delle volte quando ristampo la matrice dopo gli spostamenti visualizzo indirizzi al posto di numeri nella matrice.
Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n,m,i,j;
int k,g=3; // g è il numero di volte in cui si deve spostare il puntatore
int ir,jr;
int *pr;
srand(time(NULL));
printf("\nInserire numero righe: ");
scanf("%d",&n);
printf("\nInserire numero colonne: ");
scanf("%d",&m);
int matr [n][m];
int *p;
p=&matr[0][0];
// INIZIALIZZA MATRICE
for(j=0;j<m;j++){
for(i=0;i<n;i++){
*(p+i)=0;
}
}
// STAMPA MATRICE
for(j=0;j<m;j++){
for(i=0;i<n;i++){
printf("\t%d",*(p+i));
}
printf("\n\n");
}
// NUOVO PUNTATORE CHE PUNTA A UNA POSIZIONE CASUALE DELLA MATRICE
for(k=0;k<g;k++){
ir= rand()%(n);
jr=rand()%(m);
printf("\n%d,%d",ir,jr);
pr=&matr[ir][jr];
*pr+=1;
}
// STAMPA MATRICE
for(j=0;j<m;j++){
for(i=0;i<n;i++){
printf("\t%d",*(p+i));
}
printf("\n\n");
}
return 0;
}
Ringrazio anticipatamente a chi si impegnerà a darmi una mano.
-messy