Esercizio matrici

di il
15 risposte

Esercizio matrici

Salve ragazzi, mi sono appena iscritto a questo forum.
Non so se sono capitato nel posto giusto, ma avrei bisogno di una mano in programmazione C++ .
L'esercizio dato è:
Data una matrice con 4 righe e 3 colonne, calcolare la somma dei
valori per ogni riga e per ogni colonna.
Il problema è che sono riuscito a farlo fin qui :

#include<iostream>
#define R 4
#define C 3
using namespace std;

int main()
{
int i,j;
int somma=0;

int mat[R][C];
int sr[10];
int sc[10];

//Inseriamo i numero nella matrice
for(i=0;i<R;i++)
{
for(j=0;j<C;j++)
{
cout << "\nInserisci un numero nella matrice ";
cin >> mat[j];
}
}


//Mostriamo la matrice
cout << "\nLa matrice data e' :"<<endl;
for(i=0;i<R;i++)
{
for(j=0;j<C;j++)
{

cout <<mat[j]<<" ";
}
cout <<"\n";
}

//sommiamo per righe(sono il numero 1!!!!!!!!!!!)
for(i=0;i<R;i++)
{
for(j=0;j<C;j++)
sr = sr + mat[j];

}

for(i=0;i<R;i++)
{
cout<<"\nLa somma delle riga "<<i+1<<" e' : "<< sr;
}


cout <<"\n\n";
system("pause");
return 0;
}

15 Risposte

  • Re: Esercizio matrici

    ... e quindi ? Cosa manca? Cosa non sai fare? Che idee avresti per continuare?

    O lo vuoi finito dal forum?
  • Re: Esercizio matrici

    Il problema è che non so come fare per ottenere le somme delle colonne
  • Re: Esercizio matrici

    Ciao
    vedo che hai fatto la somma delle righe

    vinceu2o ha scritto:


    for(i=0;i<R;i++)
    {
    for(j=0;j<C;j++)
    sr = sr + mat[j];

    }

    e non riesci a fare quello delle colonne!
    sai cosa succede se inverti i 2 for che hai scritto?
    a te l'annosa sentenza!
  • Re: Esercizio matrici

    Succede questo :
  • Re: Esercizio matrici

    CROSSPOSTING Perché nessuno legge il regolamento?
  • Re: Esercizio matrici

    Perchè?
  • Re: Esercizio matrici

    vinceu2o ha scritto:


    perchè?
    In che senso "perché?" Hai letto il regolamento? Il primo punto dice
    Non effettuare crossposting

    - Evitare di aprire discussioni identiche sulla stessa o su diverse sezioni del forum per avere maggiore visibilità. Se un utente vuole rispondervi lo farà lo stesso.
    - Non pubblicare su IProgrammatori post già scritti su altri forum o siti web
    - Riteniamo poco rispettoso che venga aperta una discussione su IProgrammatori e poco dopo riproposta su altro sito web. Questo forum non è una bakeca!
    Chi apre una discussione è buona norma che lasci il tempo agli altri di rispondere. Se le risposte non sono ritenute esaustive è altresì buona norma richiedere ulteriori delucidazioni.
    Se dopo un lasso di tempo sufficiente non si hanno le risposte desiderate, allora si che conviene rivolgersi ad altro canale.
    Tu hai pubblicato la stessa discussione sull'altro forum, nello stesso giorno in cui l'hai aperta su questo forum... Non ti sembra che questo sia contrario al regolamento?
  • Re: Esercizio matrici

    Chiedo scusa, ma avevo una certa urgenza nel risolvere il problema e non pensavo vigesse questa regola. Ignorantia legis non excusat.
    Comunque nessuno ha saputo rispondermi
  • Re: Esercizio matrici

    Ecco il codice corretto:
    
    #include<iostream>
    #define R 4
    #define C 3
    using namespace std;
    
    int main()
    {
        int i,j;
    
        int mat[R][C];
        int sr[10];
        int sc[10];
    
    //Inseriamo i numero nella matrice
        for(i=0; i<R; i++) {
            for(j=0; j<C; j++) {
                cout << "\nInserisci un numero nella matrice ";
                cin >> mat[i][j];
            }
        }
    
    
    //Mostriamo la matrice
        cout << "\nLa matrice data e' :"<<endl;
        for(i=0; i<R; i++) {
            for(j=0; j<C; j++) {
                cout << mat[i][j] << " ";
            }
            cout << "\n";
        }
    
    //sommiamo per righe(sono il numero 1!!!!!!!!!!!)
        for(i=0; i<R; i++) {
            sr[i] = 0;    // <---- inizializzo la somma a 0
            for(j=0; j<C; j++)
                sr[i] = sr[i] + mat[i][j];
    
        }
    
        for(i=0; i<R; i++) {
            cout<<"\nLa somma della riga "<<i+1<<" e' : "<< sr[i];
        }
    
    
        // somma per colonne
        for(int j=0; j<C; j++) {
            sc[j] = 0;
            for(int i=0; i<R; i++) {
                sc[j] = sc[j] + mat[i][j];
            }
        }
    
        for(i=0; i<C; i++) {
            cout<<"\nLa somma della colonna "<<i+1<<" e' : "<< sc[i];
        }
    
    
        cout <<"\n\n";
        return 0;
    }
    Effettivamente bastava scambiare i due cicli for.



    P.S. Perché sr e sc hanno dimensione 10 quando sai esattamente quante righe e quante colonne hai nella tua matrice?
  • Re: Esercizio matrici

    Grazie mille, adesso funziona.
    Chiedo scusa per aver violato il regolamento.
    Per quanto riguarda sr e sc non lo so, ho solo pensato di riservare 10 come cardinalità del vettore in memoria.
  • Re: Esercizio matrici

    Sì, va bene anche così, nel senso che funziona. Però puoi proprio definirli con dimensione R e C, dato che lo sai già dall'inizio che il numero di elementi che dovranno contenere sarà esattamente quello.
  • Re: Esercizio matrici

    Ah, perfetto.
    Sarebbe possibile sapere anche a cosa servono le librerie <cstring> e <cstdlib>
  • Re: Esercizio matrici

    Definiscono funzioni, tipi di dato, ecc. che possono servirti oppure no. Ad esempio cstring serve per la manipolazione delle stringhe (quelle in formato C, cioè viste come array di caratteri). Comunque su internet trovi tutta la documentazione: cstring e cstdlib.
  • Re: Esercizio matrici

    Perdonate l'insistenza, ma avrei bisogno che qualcuno mi insegni come ordinare un array in modo crescente e in modo decrescente tramite algoritmi quali :
    -bubble sort
    -selection sort

    ... ve ne sarei immensamente grato
Devi accedere o registrarti per scrivere nel forum
15 risposte