Operazioni matrici in C ansi

ilario991
Devo realizzare un programma in c, che somma innanzitutto con se stesso l'elemento 0,0 e poi prosegue sommando 1,0 con 0,1; fine alla dim massima di riga e colonna. Poi incomincia a sommare i valori in 1,1 e 1,1; 2,1 e 1,2 ecc.
Mi chiedo: Per fare una cosa del genere mi serve per forza una matrice quadrata(con lo stesso numero di righe e colonne)?
Le somme le devo poi riportare in un vettore e infine stampare a schermo.
Qualcuno sa come fare per la somma degli el della matrice? Se è possibile postatemi il codice in C

Risposte
vict85
Una matrice in C non è altro che un array bidimensionale; di fatto un array che il compilatore "indicizza" in modo da permetterti di gestirlo come se avesse più di una dimensione. Per sommare si può scrivere, per esempio, m[0][0]+m[0][0] o nel caso specifico m[0][0]*2

Comunque non ti serve per forza una matrice. Puoi anche usare un normale array, ma con una matrice è sicuramente più comodo...

Ma sai creare una matrice vero? La devi creare in maniera dinamica?

ilario991
La matrice la dovrei usare in modo statico, non dinamico. Comunque mi chiedevo nella somma, se mi trovo matrici non quadrate, qnd mi trovo dei valori in una riga che nn corrisponde ad un valore con una colonna, nn faccio la somma? Sommo un valore con un valore indefinito o che nel caso peggiore va fuori dalla matrice???
Lo so che nn mi sono spiegato bene, cmq posto il codice per farti vedere qll che vorrei fare
#include <stdio.h>
#include <stdlib.h>

#define colonne 100
#define righe 100
#define dmax  100

/* Il programma funziona correttamente solo con le matrici quadrate */
int main(){
    int matr[righe][colonne],Arsomma[dmax];
    unsigned rig,col,ir=0,ic=0,i=-1,n,ind1=0,ind2=0;
    do{
             printf("Dammi il numero di righe della tua matrice\n");
             scanf("%u",&rig);
             printf("Dammi il numero di colonne\n");
             scanf("%u",&col);
             }while((rig<=0 || rig>righe) || (col<=0 || col>colonne));
             for(ir=0;ir<rig;ir++){
             for(ic=0;ic<col;ic++){
                                                printf("Inserisci il valore di riga %u e di colonna %u\n",ir,ic);
                                                scanf("%d",&matr[ir][ic]);
                                                }
                          } 
                          ir=0;ic=0;                                                     
    for(ind1=0;ind1<rig;ind1++){
                                for(ind2=0;ind2<col;ind2++){
                                                            i++;
                                                            Arsomma[i]=matr[ind2][ind1]+matr[ind1][ind2];  
                                                            }
                                                            }
for(n=0;n<=i;n++) printf("Vett: \n",Arsomma[n]);                                                                                                
    system("pause");
    }
    
                           

Cmq forse mi spiego meglio così:
Immaginando che qst tabella sia la mia matice:
____________________________
0 ||||| 1 ||||| 2 ||||| 3
_____________________________
1 ||||| 4 ||||| 5 ||||| 6
_____________________________
2 |||| 5 ||||| 7 |||| 8
_____________________________
3 |||| 6 |||| 8 |||| 9

Qst è una matrice con 4 righe e 4 colonne. Dove vedi i numeri uguali devo fare la somma e mettere il risultato in un array.

vict85
Basta che memorizzi la dimensione della più piccola tra le righe e le colonne.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.