Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] somma in una matrice

    ragà....dovrei fare un programma che mi visualizzi la somma della colonna con valore massimo di una matrice; ad esempio:

    1 2 3
    4 5 6
    7 8 9

    deve restituirmi 24 (cioè la somma della terza colonna in questo caso).
    Mi servirebbe uno spunto per un algoritmo....non so da dove cominciare....

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Devi considerare le righe o le colonne? Hai detto entrambe le cose.

  3. #3
    scusa...solo colonne...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    E non è difficile. Scorri tutte le colonne della matrice e calcoli la somma dei loro elementi, poi per ogni somma calcolata, verifichi se essa è maggiore di quella precedente: se lo è, aggiorni il massimo altrimenti procedi.

    Per scorrere le colonne e per calcolare la somma dei loro elementi, in sostanza devi utilizzare un ciclo simile a quello che utilizzi per la stampa ma con i for invertiti (e chiaramente facendo una somma anziché la stampa), solo che anziché scorrere le righe con il ciclo esterno e le colonne con quello interno, devi fare esattamente l'opposto.

  5. #5
    all'inversione dei for ci ero appena arrivato....ma la somma?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Per ogni colonna scorri gli elementi che le appartengono e li sommi. Una volta invertiti i for, al posto di quella printf() ci devi mettere un'istruzione di somma, poi ovviamente con qualche attenzione in più come l'inizializzazione della variabile per la somma a 0 all'inizio di ogni colonna, l'aggiornamento del massimo se necessario etc, ma se ti dico tutto io... prova a scrivere il codice, almeno poi avrai qualcosa su cui ragionare :)

  7. #7
    e che sintatticamente non mi viene niente...poi sto pure un po fuso ho passato la notte avanti a sto schermo....ok...4° caffè e ci provo....poi semmai ti posto quello che ne uscito....

  8. #8
    ecco è uscito un programma che somma l'intera matrice

    codice:
    #include <stdio.h>
    #define nR 20
    #define nC 20
    
    
    
    int main(){
        int a[nR][nC];
        int i, j, nRi, nCi, total;
        
        printf("numero desiderato righe = ");
        scanf("%d", &nRi);
        printf("numero desiderato colonne = ");
        scanf("%d", &nCi);
        
        for(i=0;i<nRi;i++){
           for(j=0;j<nCi;j++){
              printf("a[%d,%d] = ", i,j);
              scanf("%d", &a[i][j]);
              }
              }
        total=0;
        for(j=0;j<nCi;j++){
           for(i=0;i<nRi;i++){
           total+=a[i][j];
    }
    }
           
               printf("%5d\n", total);
               
              printf("\n"); 
           
        
        system("pause");
        return 0;
    }
    ho voluto postartelo lo stesso perchè rileggendo meglio la tua ultima risposta forse abbiamo due visuali diverse di programma per come mi sono spiegato io

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Skass89
    ho voluto postartelo lo stesso perchè rileggendo meglio la tua ultima risposta forse abbiamo due visuali diverse di programma per come mi sono spiegato io
    "Trovare la massima somma tra gli elementi delle colonne della matrice" ?

    Cioè con

    codice:
    1 2 3
    4 5 6
    7 8 9
    con somme pari rispettivamente a 12, 15 e 18 (dalla prima all'ultima colonna), il programma deve restituire 18?

    Se è così, l'impostazione del programma che hai postato è corretta. Ora quella variabile total chiamala sum (per esempio), e anziché inizializzarla a 0 una sola volta all'inizio del doppio for innestato inizializzala a 0 prima del ciclo interno (cioè per ogni colonna). Ogni volta che esci dal ciclo interno, nella variabile sum avrai la somma degli elementi della j-esima colonna. A quel punto non devi fare altro che introdurre una variabile max...

  10. #10
    codice:
    #include <stdio.h>
    #define nR 20
    #define nC 20
    
    
    
    int main(){
        int a[nR][nC];
        int i, j, nRi, nCi, total, max;
        
        printf("numero desiderato righe = ");
        scanf("%d", &nRi);
        printf("numero desiderato colonne = ");
        scanf("%d", &nCi);
        
        for(i=0;i<nRi;i++){
           for(j=0;j<nCi;j++){
              printf("a[%d,%d] = ", i,j);
              scanf("%d", &a[i][j]);
              }
              }
        
        max=a[0][0];
        for(j=0;j<nCi;j++){
           total=0;
           for(i=0;i<nRi;i++){
           total+=a[i][j];
           if(total>max)
           max=total;
    }
    }
               printf("%5d\n", max);
               
              printf("\n"); 
           
        
        system("pause");
        return 0;
    }
    grazie!!! eccolo qui bello e funzionante! grazie ancora

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.