Prodotto matrice vettore, con calcolo massimo [C++]

Forum di discussioni su C e C++

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
pelu.
New Entry
Messaggi: 7
Iscritto il: 04 gen 2018, 23:48

Prodotto matrice vettore, con calcolo massimo [C++]

Messaggioda pelu. » 12 gen 2018, 18:02

Traccia:
-Prodotto tra una matrice per un vettore colonna e successivamente calcolare l'elemento di valore massimo.

Io ho scritto questo codice qui, che funziona in tutto, tranne, ovviamente,che nella parte cruciale , ovvero nel prodotto.Qualunque siano i numeri che io vado ad inserire come elementi della matrice il risultato è sempre fisso.

N.B=La parte del massimo non l'ho ancora scritta poichè non mi "funziona" il prodotto.






Codice: Seleziona tutto

//Prodotto matrice per vettore colonna e max
#include<iostream>
using namespace std;
int m[10][10], v[10];

void acquisiscim(int m[10][10],int righe,int colonne);
void acquisisciv(int v[10],int dimensione);
void prodotto(int m[10][10],int v[10],int righe,int vettore,int colonna);
void stampa(int m[10][10],int righe,int colonne);

int main(){
   int m[10][10],R,C,N,i,j;
   int v[10];
   
   cout<<"Inserire il numero di righe della matrice"<<endl;
   cin>> R;
   
   cout<<"Inserire il numero di colonne della matrice"<<endl;
   cin>> C;
   
   acquisiscim(m,R,C);
   
   cout<<"Inserire la dimensione del vettore :"<<endl;
   cin>> N;
   
   acquisisciv(v,N);
   
   if(N!=C)
      cout<<"Prodotto non disponibile, colonna matrice non coincidente con riga vettore."<<endl;
      
      else{
      prodotto(m,v,R,N,C);
      
      stampa(m,R,1);}
      
      system("PAUSE");
      
      return 0;
      
   }

void acquisiscim(int m[10][10],int righe , int colonne){
   int i,j;
   
      for(i=0;i<righe;i++){
         
      for(j=0;j<colonne;j++)
      
      {
         cout<<"A[ "<<i+1<< ","<<j+1<<" ]= ";cin>>m[i][j];
      }
   }
}

void acquisisciv(int v[10],int dimensione){
   int i;
   
   for(i=0;i<dimensione;i++){
      cout<<"v[ "<<i+1<<" ] ";cin>>v[i];
   }
}

void prodotto(int m[10][10],int v[10],int righe,int vettore,int colonna){
   int i,j,k;
   
   for(i=0;i<righe;i++)
      
      for(j=0;j<vettore;j++){
         
         v[i,j]=0;
         
         for(k=0;k<colonna;k++)
         
         v[i,j]=v[i,j]+m[i][j]*v[j];
         
         }
         }
   
   void stampa(int m[10][10],int righe,int colonne){
      int i,j;
      
      for(i=0;i<righe;i++)
         
         for(j=0;j<colonne;j++){
            cout<<" P[ "<< i+1 <<", "<<j+1<<" ]= "<< m[i][j]<<endl;
         }
         
      
   }
pelu.
New Entry
Messaggi: 7
Iscritto il: 04 gen 2018, 23:48

Re: Prodotto matrice vettore, con calcolo massimo [C++]

Messaggioda pelu. » 14 gen 2018, 21:18

Sono riuscito a scrivere il codice corretto, o almeno credo.

Codice: Seleziona tutto

//Prodotto matrice per vettore colonna e max
#include<iostream>
using namespace std;
int m[10][10], v[10];

void acquisiscim(int m[10][10],int righe,int colonne);
void acquisisciv(int v[10],int dimensione);
void prodotto(int m[10][10],int v[10],int v2[10],int righe,int colonna);
void massimo(int v[10],int righe);

int main(){
   int m[10][10],R,C,N,i,j;
   int v[10];
   int v2[10];
   
   cout<<"Inserire il numero di righe della matrice"<<endl;
   cin>> R;
   
   cout<<"Inserire il numero di colonne della matrice"<<endl;
   cin>> C;
   
   acquisiscim(m,R,C);
   
   cout<<"Inserire la dimensione del vettore :"<<endl;
   cin>> N;
   
   acquisisciv(v,N);
   
   if(N!=C)
      cout<<"Prodotto non disponibile, colonne matrice non coincidenti con righe vettore."<<endl;
      
      else{
      prodotto(m,v,v2,R,C);
      
      massimo(v2,R);
      
      }
      
      system("PAUSE");
      
      return 0;
      
   }

void acquisiscim(int m[10][10],int righe , int colonne){
   int i,j;
   
      for(i=0;i<righe;i++){
         
      for(j=0;j<colonne;j++)
      
      {
         cout<<"A[ "<<i+1<< ","<<j+1<<" ]= ";cin>>m[i][j];
      }
   }
}

void acquisisciv(int v[10],int dimensione){
   int i;
   
   for(i=0;i<dimensione;i++){
      cout<<"v[ "<<i+1<<" ] ";cin>>v[i];
   }
}

void prodotto(int m[10][10],int v[10],int v2[10],int righe, int colonna){
   
   int i,j,somma;
   
   for(i=0;i<righe;i++){
   
   
      somma=0;
    
         for(j=0;j<colonna;j++){
          
          somma = somma+ v[i]*m[i][j];
          }
          v2[i]=somma;}
          
          for(i=0;i<righe;i++){
             
             cout<< "P[ "<<i+1<<"]= "<<v2[i]<<endl;
         }
      }
   

void massimo(int v[10],int righe){
   
   int i,max;
   
   max=v[0];
   
   for(i=0;i<righe;i++)
   
          if(v[i]>max){
             
             max=v[i];
         }
         
         cout<<"Il valore massimo tra gli elementi del vettore prodotto e': "<<max<<endl;
}   



C'è qualcosa che sbaglio, o che posso ottimizzare?

Torna a “C/C++”

Chi c’è in linea

Visitano il forum: Google [Bot] e 45 ospiti