ciao a tutti ,spero qualcuno possa aiutarmi,
ho davanti questo esercizio :
Allocare dinamicamente una matrice di interi didimensioni specificatedall’utente
in fase di esecuzione. Inizializzare tutti glielementi della matrice a zero.
Definire un puntatore all’elemento (0,0).
Scrivere un algoritmo che sposti il puntatore in posizione (i,j) , con i,j numeri
casuali non negativi e minori delle dimensioni della matrice). Eseguire H volte
(con H richiesto dall’ utente in fase di esecuzione) la procedura di spostamento
e ogni volta aumentare il valore della casella di (i+j). Stampare a video la matrice
ho utilizzato questa operazione per incrementare *(*(mat+i)+j)=i+j;
ma essendo Richiamato H volte , nel momento in cui si ripete lo stesso valore (i,j)
l elemento della matrice non si va a sommare con quello precedentemenet acquisto in quella determinata posizione.
ho provato sia con degli if che con dei while ,utilizzando dei nuovi paramentri temporani per memorizzare i valori di i e j per confrontarli e modificare l istruzione in
*(*(mat+i)+j)=(i+j)*2 ; ma non ci sono riuscito!
vi prego aiutatemi!
#include <stdlib.h>
#include <stdio.h>
#include<time.h>
int main()
{
int**mat,righe,colonne,r,c,H,k;
printf(" quante righe ha la matrice ? ");
scanf("%d",&righe);
printf(" quante colonne ha la matrice ? ");
scanf("%d",&colonne);
mat = (int**) malloc (righe *sizeof (int*)); /*allocamento*/
for (r=0; r<righe ; r++)
{ mat[r]= (int*)malloc (colonne* sizeof (int));}
printf("\n");
for(r=0;r<righe;r++)
{
for(c=0;c<colonne;c++)
{
mat[r][c]=0;}}
printf("la matrice ha tutti gli elementi a zero " );
printf("\n");
for(r=0;r<righe;r++){
for(c=0;c<colonne;c++){
printf("%3d", mat[r][c]);}
printf("\n");}
printf( "quante volte vuoi spostare il puntatore ? ");
printf("\n");
scanf("%d",&H);
srand(time(NULL));
for(k=0;k<H;k++)
{
int i=(int)((float)righe*rand()/RAND_MAX);
int j =(int)((float)colonne*rand()/RAND_MAX);
printf("\n");
printf(" il puntatore si e' spostato nella posizione %d %d ", i ,j);
printf("\n");
printf("la matrice nuova e' " );
printf("\n");
for(r=0;r<righe;r++)
{
for(c=0;c<colonne;c++){
*(*(mat+i)+j)=i+j;
printf("%3d",mat[r][c]);}
printf("\n");
};
}
for (r=0; r<righe ; r++)
free (mat[r]);
free (mat);
}