Matrice somma righe e colonne!

di il
9 risposte

Matrice somma righe e colonne!

Come posso fare per sommare delle colonne di una certa matrice avevo iniziato con
/*Calcolare le somme degli elementi delle colonne di una matrice di interi
a di ordine (r X c),
 scrivendole in un vettore riga di interi b di lunghezza n*/
#include <stdio.h>
 #define  R 100
 #define  C 100
 #define max 100
 main()
 {   int i,j,r,c;
     int a[R][C];
     int sommarig,sommacol;


     /*lunghezza della matrice*/
     printf("\ninserire il numero di righe:\n ");
     scanf("%d",&r);
     printf("\ninserire il numero di colonne:\n ");
     scanf("%d",&c);

    /* carimamento matrice*/
    for(i=0;i<r;i++)
    {
    for(j=0;j<c;j++)
        {
    printf("\ninserire il valore alla riga %d e alla colonna %d:",i+1,j+1);
    scanf("%d",&a[i][j]);
        }
      }
come posso fare per sommare le righe o colonne?

9 Risposte

  • Re: Matrice somma righe e colonne!

    Beh hai creato la matrice, riesci almeno a intuire matematicamente il procedimento? crei un array di lunghezza [scoprilo da solo], crei una variabile temp, fai due cicli annidati, quello più esterno cicla sulle colonne, quello più interno sulle righe. Ad ogni iterazione del ciclo interno fai temp= temp+ matrice[riga][colonna]; ogni volta che esci da ciclo interno salvi temp sul vettore che ti sei creato in posizione [colonna] e resetti temp.
    Prova da solo
  • Re: Matrice somma righe e colonne!

    
         /* fa la somma*/
           sommacol=0;
           for(j=0;j<c;j++)
           {
               for(i=0;i<r;i++)
                sommacol+=a[i][j];
           }
           printf("\nla somma:%1d",sommacol);
    
         /* somma righe*/
         sommarig=0;
         for(i=0;i<r;i++)
         {
             for(j=0;j<c;j++)
                sommarig+=a[i][j];
         }
      printf("\nla somma:%1d",sommarig);
     printf("\necco il tuo array:\n");
    for (i=0;i<r;i++){
            printf("\n");
        for (j=0;j<c;j++){
    
    printf("%2d",a[i][j]);}
    
     }
     printf("\n");
     system("pause");
     }
    
    cosi?
  • Re: Matrice somma righe e colonne!

    Per somma delle colonne io intendo: prendo tutta la colonna, calcolo la somma e riporto il valore da qualche parte (es: array);
    Idem per le righe; con questo algoritmo invece tu stai facendo la somma di tutta la matrice:
    
    for(j=0;j<c;j++)
           {
               for(i=0;i<r;i++)
                sommacol+=a[i][j];
           }
           printf("\nla somma:%1d",sommacol);
    
    Ad ogni iterazione del for interno vai a sommare tutti i valori in colonna j--> corretto.
    Incrementi j e reiteri sulla nuova colonna, andando ancora a sommare al precedente sommacol la nuova colonna --> sbagliato.
    Devi azzerare sommacol prima di passare alla colonna sucessiva.
    
    for(j=0;j<c;j++)
           {
               for(i=0;i<r;i++)
               sommacol+=a[i][j];
    
               printf("\n somma colonna %d: %d",j,sommacol);
               sommacol=0;
           }
    
  • Re: Matrice somma righe e colonne!

    /*Calcolare le somme degli elementi delle colonne di una matrice di interi
    a di ordine (r X c),
     scrivendole in un vettore riga di interi b di lunghezza n*/
    #include <stdio.h>
     #define  R 100
     #define  C 100
     #define max 100
    
     main()
     {   int i,j,r,c;
         int a[R][C];
         int sommarig,sommacol;
    
    
         /*lunghezza della matrice*/
         printf("\ninserire il numero di righe:\n ");
         scanf("%d",&r);
         printf("\ninserire il numero di colonne:\n ");
         scanf("%d",&c);
    
        /* carimamento matrice*/
        for(i=0;i<r;i++)
        {
        for(j=0;j<c;j++)
            {
        printf("\ninserire il valore alla riga %d e alla colonna %d:",i+1,j+1);
        scanf("%d",&a[i][j]);
            }
          }
    
          /* fa la somma*/
          for(j<0;j<c;j++)
           {
               for(i<0;i<r;i++)
               sommacol+=a[i][j];
                 printf("\nla colonnavale :%d",sommacol);
               sommacol=0;
           }
    
    /* stampiamo array*/
     printf("\necco il tuo array:\n");
    for (i=0;i<r;i++){
        printf("\n");
    
        for (j=0;j<c;j++){
          printf("%2d",a[i][j]);}
    
     }}
    
    
    se faccio così non mi stampa il valore sommacol.. saranno le parentesi?
  • Re: Matrice somma righe e colonne!

    Hai scritto:
    for(j<0;j<c;j++)
    for(i<0;i<r;i++)

    Metti l'uguale..
    for(j=0;j<c;j++)
    for(i=0;i<r;i++)
  • Re: Matrice somma righe e colonne!

    brugne92 ha scritto:


    Hai scritto:
    for(j<0;j<c;j++)
    for(i<0;i<r;i++)

    Metti l'uguale..
    for(j=0;j<c;j++)
    for(i=0;i<r;i++)
    grazie errori di distrazione >,<
    utilma cosa e non rompo più

    come mai stampa altri due valori?
  • Re: Matrice somma righe e colonne!

    Impossibile se usi l'algoritmo scritto due post più in alto. Non avrai mica chiuso
     printf("\n somma colonna %d: %d",j,sommacol); 
    dentro al for più interno con delle graffe?
  • Re: Matrice somma righe e colonne!

    Ciao antonio, se togli le graffe come suggerito, il programma funziona a dovere.
     /* fa la somma*/
          for(j=0;j<c;j++)
            {
               sommacol=0;
              
               for(i=0;i<r;i++)
                sommacol= sommacol + a[i][j];
                printf("\ncolonna vale:%d",sommacol);
    
           }
  • Re: Matrice somma righe e colonne!

    F14 Si avevo messo le parentesi
    grazie funziona
Devi accedere o registrarti per scrivere nel forum
9 risposte