Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C++] confronto intera riga

    http://i.imgur.com/ycueTSt.jpg
    Devo fare questo tipo di programma ma non riesco bene a confrontare le righe e determinare quali sono quelle uguali e quali sono quelle diverse credo che il problema sia dovuto al fatto che non confronta l'intera riga ma solo gli elementi della riga e se li trova uguali li incrementa come faccio a far si che mi confronti l'intera riga io ho fatto così


    codice:
    #include<iostream>
    #include<cstdlib>
    #include<iomanip>
    #include<fstream>
    
    
    using namespace std;
    
    
    int lettura(int*, char*);
    
    
    int ricerca(int *vettore,int dimvett,int matrice[][6],int rigmatr,int colmat ){
    int contatore=0;
              for(int c=0; c<colmat; c++){
              
              for(int i=0; i<dimvett; i++){
                  contatore=0;
                  for(int r=0; r<rigmatr; r++){
                      if(vettore[i]==matrice[r][c]){
                    contatore++;
                }
                if(contatore>1){
                cout<<"\nle righe uguali sono"<<r;
                contatore=0;
                    
                    }
                
                
                
           
                   
                }
    
    
            }
    
    
        
        }
    }
    
    
    int main(){
        const int lun_maxcar=20, dim=20;
        char nome_file[lun_maxcar];
        int vet[dim];
        int righe=6;
        int colonne=6;
        int mat[6][6]={{2,3,6,5,8,9},{1,3,4,6,7,9},{3,4,5,2,1,1},{1,3,4,6,7,9},{1,3,4,6,7,9},{4,4,7,1,3,4}};
        
        cout<<"inserisci il nome del file:";
        cin.getline(nome_file, lun_maxcar-1, '\n');
        cout<<"\n";
        int size=lettura(vet, nome_file);
        
        cout<<"Il vettore da cercare nella stringa e': "<<endl;
        for(int i=0; i<size; i++){
            cout<<vet[i];
        }
        ricerca(vet, size, mat, righe, colonne);
        
        
    }
    
    
    
    
    
    
    int lettura(int *array, char *file){
        
        fstream mio_file;
        int riemp=0;
    
    
        mio_file.open(file, ios::in);
    
    
        if(!mio_file){
        cout<<"\n Impossibile aprire file: "<<file;
        exit(1);
        }    
        
        riemp=0;
        while(!mio_file.eof())
        mio_file>>array[riemp++];
        
        return riemp;
     
    }

    questo è il risultato che mi da mi stampa una riga in più
    http://i.imgur.com/SVkl18R.png

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non si capisce quale sia il problema ... e soprattutto nulla è urgente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da TheBlackWolf Visualizza il messaggio
    http://i.imgur.com/ycueTSt.jpg
    Devo fare questo tipo di programma ma non riesco bene a confrontare le righe e determinare quali sono quelle uguali e quali sono quelle diverse credo che il problema sia dovuto al fatto che non confronta l'intera riga ma solo gli elementi della riga e se li trova uguali li incrementa come faccio a far si che mi confronti l'intera riga io ho fatto così


    codice:
    #include<iostream>
    #include<cstdlib>
    #include<iomanip>
    #include<fstream>
    
    
    using namespace std;
    
    
    int lettura(int*, char*);
    
    
    int ricerca(int *vettore,int dimvett,int matrice[][6],int rigmatr,int colmat ){
    int contatore=0;
              for(int c=0; c<colmat; c++){
              
              for(int i=0; i<dimvett; i++){
                  contatore=0;
                  for(int r=0; r<rigmatr; r++){
                      if(vettore[i]==matrice[r][c]){
                    contatore++;
                }
                if(contatore>1){
                cout<<"\nle righe uguali sono"<<r;
                contatore=0;
                    
                    }
                
                
                
           
                   
                }
    
    
            }
    
    
        
        }
    }
    
    
    int main(){
        const int lun_maxcar=20, dim=20;
        char nome_file[lun_maxcar];
        int vet[dim];
        int righe=6;
        int colonne=6;
        int mat[6][6]={{2,3,6,5,8,9},{1,3,4,6,7,9},{3,4,5,2,1,1},{1,3,4,6,7,9},{1,3,4,6,7,9},{4,4,7,1,3,4}};
        
        cout<<"inserisci il nome del file:";
        cin.getline(nome_file, lun_maxcar-1, '\n');
        cout<<"\n";
        int size=lettura(vet, nome_file);
        
        cout<<"Il vettore da cercare nella stringa e': "<<endl;
        for(int i=0; i<size; i++){
            cout<<vet[i];
        }
        ricerca(vet, size, mat, righe, colonne);
        
        
    }
    
    
    
    
    
    
    int lettura(int *array, char *file){
        
        fstream mio_file;
        int riemp=0;
    
    
        mio_file.open(file, ios::in);
    
    
        if(!mio_file){
        cout<<"\n Impossibile aprire file: "<<file;
        exit(1);
        }    
        
        riemp=0;
        while(!mio_file.eof())
        mio_file>>array[riemp++];
        
        return riemp;
     
    }

    questo è il risultato che mi da mi stampa una riga in più
    http://i.imgur.com/SVkl18R.png
    scusate questa è il risultato che mi esce
    http://i.imgur.com/X1vO1m4.png

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E cosa dovrebbe uscire invece?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Comunque, se usi

    if(contatore>1)

    vuol dire che consideri solo se un solo elemento è uguale, non tutti quelli della riga.
    Per fare in modo che sia tutta la riga, il contatore dovrà essere uguale al numero di elementi nella riga.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Il motivo per cui fa questo lo avevo capto anche io come faccio a fare quello che tu mi dici?ah devo impostarlo a 6 giusto contatore==6?Se è così non mi da nessun risultato
    Ultima modifica di TheBlackWolf; 11-09-2016 a 16:15

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Guarda che questo è un altro forum e Toki non c'entra nulla.

    Per il problema ti ho già risposto...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Guarda che questo è un altro forum e Toki non c'entra nulla.

    Per il problema ti ho già risposto...
    si ma non so come fare come faccio a confrontare non gli elementi ma la riga?Come faccio a farlo?Io di questo me ne ero accorto anche io quando ho fatto il programma ma non so come fare...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da TheBlackWolf Visualizza il messaggio
    si ma non so come fare come faccio a confrontare non gli elementi ma la riga?Come faccio a farlo?Io di questo me ne ero accorto anche io quando ho fatto il programma ma non so come fare...
    Te lo dirò in altro modo ... il codice della ricerca l'hai scritto tu? Sapresti spiegarlo?


    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Te lo dirò in altro modo ... il codice della ricerca l'hai scritto tu? Sapresti spiegarlo?


    Si in poche parole va a confrontare gli argomenti e incrementa il contatore se incontra due valori uguali scorrendo la matrice e il vettore attraverso il ciclo for, ma appunto i valori non la riga intera come posso fare?
    Se due valori sono maggiori di uno allora ci saranno due valori uguali ho provato anche a considerare il contatore comparato a zero ma non mi stampa niente, così andavo direttamente a trovare le righe diverse
    Ultima modifica di TheBlackWolf; 11-09-2016 a 16:50

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.