Problema matrci

di il
8 risposte

Problema matrci

Salve ragazzi avrei problemi con l'ultimo punto di questo esercizio come potrei fare?

Scrivere un programma che realizzi le seguenti funzionalita’:
a) legga in input due matrici di numeri reali e calcoli la matrice somma e il prodotto tra le due
matrici
b) salvi la matrice somma all’interno di un file di testo
c) legga in input una matrice di numeri reali e scriva in output la riga della matrice che contiene
il maggiore elemento della matrice

Questo è il codice:
#include <stdio.h>
#define N 2
#define P 2   
#define M 2

int a[M][N], b[N][P], c[M][N];
int n,m,i,j,k;

//INSERIMENTO MATRICI.
int matrice_1(){
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<M;i++)
for (j=0;j<N;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
};
printf("\nStampiamo i dati della prima matrice \n");
for (i=0;i<M;i++) {
printf("\n");
for(j=0;j<N;j++) 
printf("\t%d", a[i][j]);                
};
};

int matrice_2(){
printf("\nInseriamo i dati nella seconda matrice \n");
for (i=0;i<N;i++)
for (j=0;j<P;j++){
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &b[i][j]);
};
printf("\nStampiamo i dati della seconda matrice \n");
for (i=0;i<N;i++) {
printf("\n");
for(j=0;j<P;j++) 
printf("\t%d", b[i][j]);                
};
};

//CALCOLO SOMMA.
int somma(){
for (i=0;i<M;i++) {
for (j=0;j<N;j++) 
c[i][j]=a[i][j]+b[i][j];            
};
printf("\nStampiamo i dati della matrice somma\n");
for (i=0;i<M;i++) {
printf("\n");
for(j=0;j<N;j++) 
printf("\t%d", c[i][j]);                
};
FILE *p_file;
p_file=fopen("M.txt","w");
if(p_file){
for (i=0;i<M;i++) {
printf("\n");
for(j=0;j<N;j++) 
fprintf(p_file,"\t%d",c[i][j]);
printf("Scrittura ok \n");
}
}
else{
printf("Errore \n");	
}
};

//PRODOTTO.
int prodotto(){
for (i=0;i<M;i++) 
for(j=0;j<P;j++) {
c[i][j]=0;
for(k=0;k<N;k++)    
c[i][j]=c[i][j]+a[i][k]*b[k][j];
};
printf("\nStampiamo i dati della matrice prodotto \n");
for (i=0;i<M;i++){
printf("\n");
for(j=0;j<P;j++) 
printf("\t%d", c[i][j]);                
}; 	
};


int main() { 
matrice_1();
matrice_2();
somma();
prodotto();
return 0;
}

8 Risposte

  • Re: Problema matrci

    Scusa ma se il problema è il punto c), perchè posti a) e b) e il codice ad esso relativo?

    In ogni caso, se ho ben capito la richiesta, il problema si riduce a trovare la riga di appartenenza del massimo, giusto?
    In tal caso non mi sembra tanto complicato... nessuna idea al riguardo?

    P.S.
    E se non esiste un massimo assoluto?
  • Re: Problema matrci

    int matrice_3(){
    printf("\nInseriamo i dati nella matrice \n");
    for (i=0;i<M;i++)
    for (j=0;j<N;j++) {
    printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
    scanf("%d", &a[i][j]);
    };
    printf("\nStampiamo i dati della prima matrice \n");
    for (i=0;i<M;i++) {
    printf("\n");
    for(j=0;j<N;j++) 
    printf("\t%d", a[i][j]);                
    };
    
  • Re: Problema matrci

    Io ho provato così ma non penso vada bene
  • Re: Problema matrci

    printf("\nStampiamo la riga con il valore maggiore \n");
    
    if(i<j){
    for(j=0;j<N;j++)
    printf("\t%d",a[j]);
    }
    else{
    for(i=0;i<M;i++)	
    printf("\t%d",a[i]);
    }
    
    };
  • Re: Problema matrci

    Scusami avevo sbagliato pezzo ahahaha
  • Re: Problema matrci

    kakashi889 ha scritto:


    Io ho provato così ma non penso vada bene
    In effetti non ha molto senso... quanto vale i nella condizione dell'if? Cos'è a?

    P.S.
    Ma il resto del codice lo hai scritto tu?
  • Re: Problema matrci

    #include <stdio.h>
    #define N 2  
    #define P 2    
    #define M 2 
    
    int a[M][N], b[N][P], c[M][N];
    int n,m,i,j,k;
    
    //INSERIMENTO MATRICI.
    int matrice_1(){
    printf("\nInseriamo i dati nella matrice \n");
    for (i=0;i<M;i++)
    for (j=0;j<N;j++) {
    printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
    scanf("%d", &a[i][j]);
    };
    printf("\nStampiamo i dati della prima matrice \n");
    for (i=0;i<M;i++) {
    printf("\n");
    for(j=0;j<N;j++) 
    printf("\t%d", a[i][j]);                
    };
    };
    
    int matrice_2(){
    printf("\nInseriamo i dati nella seconda matrice \n");
    for (i=0;i<N;i++)
    for (j=0;j<P;j++){
    printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
    scanf("%d", &b[i][j]);
    };
    printf("\nStampiamo i dati della seconda matrice \n");
    for (i=0;i<N;i++) {
    printf("\n");
    for(j=0;j<P;j++) 
    printf("\t%d", b[i][j]);                
    };
    };
    
    //CALCOLO SOMMA.
    int somma(){
    for (i=0;i<M;i++) {
    for (j=0;j<N;j++) 
    c[i][j]=a[i][j]+b[i][j];            
    };
    printf("\nStampiamo i dati della matrice somma\n");
    for (i=0;i<M;i++) {
    printf("\n");
    for(j=0;j<N;j++) 
    printf("\t%d", c[i][j]);                
    };
    FILE *p_file;
    p_file=fopen("M.txt","w");
    if(p_file){
    for (i=0;i<M;i++) {
    printf("\n");
    for(j=0;j<N;j++) 
    fprintf(p_file,"\t%d",c[i][j]);
    printf("Scrittura ok \n");
    }
    }
    else{
    printf("Errore \n");	
    }
    };
    
    //PRODOTTO.
    int prodotto(){
    for (i=0;i<M;i++) 
    for(j=0;j<P;j++) {
    c[i][j]=0;
    for(k=0;k<N;k++)    
    c[i][j]=c[i][j]+a[i][k]*b[k][j];
    };
    printf("\nStampiamo i dati della matrice prodotto \n");
    for (i=0;i<M;i++){
    printf("\n");
    for(j=0;j<P;j++) 
    printf("\t%d", c[i][j]);                
    }; 	
    };
    
    //Matrice3 N=colonne M=righe
    int matrice_3(){
    int maxr;
    int col;
    int max; int it;
    
    printf("\nInseriamo i dati nella matrice \n");
    for (i=0;i<M;i++)
    for (j=0;j<N;j++) {
    printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
    scanf("%d", &a[i][j]);
    };
    printf("\nStampiamo i dati della matrice \n");
    for (i=0;i<M;i++) {
    printf("\n");
    for(j=0;j<N;j++) 
    printf("\t%d", a[i][j]);                
    };
    
    max=a[0][0];
    for(i=0; i<M; i++){
    for(j=0; j<N; j++){
    if (max<a[i][j]){
    it=i;
    max= a[i][j];
    }
    }
    }
    printf("\nLa riga con l'elemento maggiore della matrice e':\n");
    for(j=0;j<N;j++){
    printf("%d ",a[it][j]);
    }
    };
    
    
    
    
    int main() { 
    matrice_3();
    matrice_1();
    matrice_2();
    somma();
    prodotto();
    return 0;
    }
  • Re: Problema matrci

    Ho risolto così
Devi accedere o registrarti per scrivere nel forum
8 risposte