Esercizio sulle matrici..

di Anonimizzato13124 il
42 risposte

42 Risposte - Pagina 3

  • Ma allora sono io che non mi spiego, io non riesco a trovare una condizione afinchè vengano fatte ste somme parziali... o meglio l'avrei trovata , ossia che l'indice j<=i. Pero mi viene stampata sempre la stessa cifra..
  • Non devi cercare nessuna condizione.
    Se visualizzi la somma nel ciclo, quella è una somma parziale.

    Insomma, con questo codice
    
    	for(i=0;i<N;i++)
    	{
    		for(j=0;j<N;j++)
    		{
       		        somma=somma+matrice1[i][j];
    			printf("Somma[%d][%d] = %d\n", i, j, somma);
    		}   
    	}
    
    visualizzi tutte le somme parziali che ti servono ... quindi ...
  • Ma veramente il testo è diverso da questo.
  • Oh Davide ... sveglia ... lLo so che il testo è diverso ... sto cercando di farti arrivare alla soluzione per passi ... ma vedo che non ho fortuna.

    Con questo codice visualizzi le somme parziali? Adesso basta inserire queste somme parziali negli elementi matrice2[j] e poi visualizzarla.
  • L'esercizio non richiede le somme parziali.
    All'elemento 11 per esempio ci deve essere la somma dell'elemento 00, 01, 10, 11.
  • E la somma degli elementi 00, 01, 10, 11 non è una somma parziale? Tu come la chiami?

    Se scrivi
    
    for(i=0;i<N;i++)
       {
          for(j=0;j<N;j++)
          {
                     somma=somma+matrice1[i][j];
                     matrice2[i][j] = somma;
          }   
       }
    
    cosa ottieni ?
  • Mi visualizza oltre quello che visualizzavo prima anche la matriceB con gli elementi messi al loro posto secondo le somme parziali , solo che le somme che io cerco sono diverse.
  • Cioè ? Fai un esempio
  • Matrice di partenza

    5 2 2
    2 4 3
    4 9 7


    matrice che devo ottenere

    5 7 9
    11 15 18
    22 31 38.

    Io pero dovrei ottenere:

    5 7 9
    7 15 18... e cosi via.
  • Ah, quindi somme parziali per "area" ...

    Quindi
    
    	for(i=0;i<N;i++)
    		for(j=0;j<N;j++)
    		{
    			somma = 0;
    
    			for(k=0;k<=i;k++)
    				for(w=0;w<=j;w++)
    					somma=somma+matrice1[k][w];
    
    			matrice2[i][j]=somma;
    		}   
    
  • Sii, è proprio per questo che io avevo introdotto gli indici t ed s in principio e poi quando mi hai detto di procedere solo con gli indici i, j non sapevo come procedere !!
  • Sì, ma gli altri indici li devi usare con altre due for innestate altrimenti non servono, nè da soli nè con if di controllo.
  • Non avevo pensato ad annidare altri 2 for dentro i primi 2, è più facile di quanto credessi.
    Comunque per sfoltire il programma ho utilizzato una sola funzione stampamatrice.
    Grazie comunque oregon
Devi accedere o registrarti per scrivere nel forum
42 risposte