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

di il
1 risposte

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

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.





//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;
			}
			
		
	}

1 Risposte

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

    Sono riuscito a scrivere il codice corretto, o almeno credo.
    //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?
Devi accedere o registrarti per scrivere nel forum
1 risposte