Occorrenze tra matrice e vettore

di il
7 risposte

Occorrenze tra matrice e vettore

Se devo trovare quanti elementi hanno in comune una matrice ed un vettore come devo procedere?

io avevo pensato così:

fisso il conteggio delle righe della matrice a 0 e scorro le colonne, confrontandole con gli elementi dell'array, se c'è un elemento uguale il mio contatore si incrementa,
poi incremento le rige, quindi dovrei implementarlo nel modo seguente :
void cercaOccorrenze(matrice m,int r, vettore v, int riemp){
	
	int occorrenza=0
	int i=0;
	
	for (int j=0;j<r;j++){
		
		for (int k=0;k<riemp;k++){
			
			if(m[i][j]=v[k]){//<------ qui ho il mio errore
				
				cout<<"ci sono "<<occorrenza + 1 <<" occorrenze";
							}
			}
	i++;
	}
}
ma ovviamente non va

7 Risposte

  • Re: Occorrenze tra matrice e vettore

    if(m[i][j]=v[k]){//<------ qui ho il mio errore
    ==
    m[i][j]==v[k])... 
    se metti un solo uguale m[j] prende il valore di v[k]
  • Re: Occorrenze tra matrice e vettore

    Giusto xD

    ma comunque pare non funzionare, credo che sia roba di parentesi, mi date una mano?
    void cercaOccorrenze(matrice m,int r, vettore v, int riemp){
    	
    	bool non=true;
    	int occorrenza=0;
    	int i=0;
    	
    	for (int j=0;j<r;j++){
    		
    		for (int k=0;k<riemp;k++){
    			
    			if(m[i][j]!=v[k]){
    				occorrenza++;
    				
    							}
    			else non=false;
    			}
    	i++;
    	}
    	if(non)
    	cout<<"ci sono "<<occorrenza  <<" occorrenze";
    	else if(!non)
    		cout<<"non ci sono occorrenze";
    }
    		 
    
  • Re: Occorrenze tra matrice e vettore

    Ma da errori nella compilazione oppure il risultato che restituisce è sbagliato?
  • Re: Occorrenze tra matrice e vettore

    Errore nel risultato

    se inserisco nomi uguali mi dice non ci sono occorrenze, se cambio il segno in if(m[j]!=v[k]), che poi è come te l' ho postato io, ma in realtà io vorrei che funzionasse con if(m[j]==v[k])

    quindi se i contenuti sono uguali incrementami il numero di occorrenza, altrimenti....ah no ! ora mi rendo conto che al primo elemento diverso esce dal ciclo mmm devo trovare un'altro metodo.
  • Re: Occorrenze tra matrice e vettore

    Mhh ora non so come funziona il tuo programma ma da queste righe almeno in teoria dovresti mettere == e non != e così dovrebbe funzionare perchè se metti != gli dici di aggiungere 1 a occorenza ogni volta che le parole sono diverse xD

    if(m[i][j]!=v[k]){
                occorrenza++;
                
                         }
             else non=false;
             }
       i++;
       }
       if(non)
       cout<<"ci sono "<<occorrenza  <<" occorrenze";
       else if(!non)
          cout<<"non ci sono occorrenze";
    }
    credo venga meglio così
    if(m[i][j]==v[k])
                {
                     occorrenza++;
                }
             }
        i++;
      }
    
       if(occorrenza>0)
    {
       cout<<"ci sono "<<occorrenza  <<" occorrenze";
    }
    
       else
    {
          cout<<"non ci sono occorrenze";
    }
    }
    però non sono un paladino del c++ quindi non ti fidare troppo di me xD aspetta Alee oppure skynet per avere certezze
  • Re: Occorrenze tra matrice e vettore

    Niente da fare , vi passo i tre file:

    Main
    #include "func.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    #define N 100
    	//Sia dato un file di testo contenenti una sequenza di nomi. Nell'ipotesi che un nome maschile termina con "o" e uno femminile termina con "a", scrivere un programma che conti e stampi i nomi maschili e i nomi femminili non ripetuti nel file
    using namespace std;
    
    int main (int argc, char * const argv[]) {
      
    	
    	
    	matrice m;
    	int r;
    	
    	vettore v;
    	int riemp;
    	
    	inserisciInMatrice( m,  r);
    	
    	cout<<endl;
    	
    	leggiDaFile(v,riemp);
    	
    	cout<<endl;
    	
    	cercaOccorrenze(m,r,  v, riemp);
    	
    	
    
    	
        return 0;
    }
    
    Header
    
    #ifndef mamma
    #define mamma
    
    #define N 100
    #define R 20
    #include <fstream>
    
    
    
    
    typedef char nomi [R];
    
    typedef nomi matrice[N][N];
    
    typedef nomi vettore[N];
    
    void inserisciInMatrice(matrice & m,int & r);
    
    
    
    void leggiDaFile(vettore & v,int & riemp);
    
    void cercaOccorrenze(matrice m,int r, vettore v, int riemp);
    
    
    #endif

    Func.cpp
    /*
     *  func.cpp
     *  preappello
     *
     *  Created by Gennaro Oliviero on 18/12/11.
     *  Copyright 2011 __MyCompanyName__. All rights reserved.
     *
     */
    
    #include "func.h"
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    
    void inserisciInMatrice(matrice & m,int & r){
    
    	cout<<"\nDefinisci la tua matrice :";
    	cout<<"\nQuante righe e colonne deve avere la tua matrice quadrata?";
    		cin>>r;
    	
    	cout<<"\nRiempi la matrice";
    		for(int i=0;i<r;i++){
    			for(int j=0;j<r;j++){
    				cout<<"\nInserisci un nome\n";
    				cin>>m[i][j];
    			}
    		}
    
    		// Stampa della matrice
    	for(int i=0;i<r;i++){
    		for(int j=0;j<r;j++){
    			
    			cout<<m[i][j]<<" ";}
    		cout <<endl;
    	}
    }
    
    
    
    
    
    
    
    void leggiDaFile(vettore & v,int & riemp ){
    	
    	ifstream in;
    	
    	in.open("/Users/Genna/Desktop/fondamenti di informatica/algoritmi di base/prove d'esame/comparare a e o/preappello/nomi.txt",ios::in);
    	
    	cout<<"Quanti nomi ci sono nel tuo file?";
    	cin>>riemp;
    	
    	for (int i=0;i<riemp;i++){
    	 in>>v[i];
    		cout<<v[i];
    		cout<<endl;
    	}	
    		in.close();
    	
    }
    		
    
    void cercaOccorrenze(matrice m,int r, vettore v, int riemp){
    	int i=0;
    	int occorrenza=0;
    	
    	for(int j=0;j<r;j++){
    		for (int k=0;k<r;k++){
    	if(strcmp (m[i][j]==v[k]))
    	{
    		occorrenza++;
    	}
    }
    i++;
    }
    
    if(occorrenza>0)
    {
    	cout<<"ci sono "<<occorrenza  <<" occorrenze";
    	}
    	
    	else
    	{
    		cout<<"non ci sono occorrenze";
    	}
    	}
    		 
    		
  • Re: Occorrenze tra matrice e vettore

    Scusa te l'ho detto che non sono per niente esperto xD ti chiedo.. perchè fai inserire dei nomi nella matrice? (che non so cosa sia) devi vedere solo in un file di testo quante volte si ripetono le parole no?
Devi accedere o registrarti per scrivere nel forum
7 risposte