Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    8

    Algoritmo "Eseguire H volte la procedura di spostamento e ogni volta aumentare il val

    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);
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    8
    HO RISOLTO DA SOLO....
    posto la soluzione caso mai servisse a qualcuno......
    grazie lo stesso a tutti quelli che hanno letto il post .


    era na ca**ata......dalla serie a volte si pensano a 100 cose piu complicate piuttoste che ad una semplice...

    pre = *(*(mat+i)+j) ;

    *(*(mat+i)+j)=i+j+pre;

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    8
    ....mi correggo......

    w l aritmetica dei puntatori....
    non serve l int pre....


    *(*(mat+i)+j) += (i+j);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.