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

    [C++] matrici e vettori

    Ciao, sto cercando di confrontare tutte le righe di una matrice con un vettore ( il riempimento è uguale)
    Nel caso in cui esista una riga della matrice uguale al vettore devo stampare a video : SI
    Nel caso in cui NON esista alcuna riga della matrice uguale al vettore devo stampare a video: NO

    Ho fatto così ma qualcosa non quadra...mi date una mano ??

    codice:
     int trovato=1;
     int i=0;
     int j=0;
     
         
     while(!trovato)
      {  
        for(int i=0;i<riemp;i++)
           {
              while(matrice[i][j]!=v[j] && j<riemp && i<riemp)
                    { 
                       trovato=0;
                       j++;
                    }
           }
      }
      
      if(trovato==0)
      cout<<"NO!!";
      else
      cout<<"SI!!";

  2. #2
    Nessuno mi può aiutare ? :/ L'unica cosa che sono riuscito a fare è quella di scomporre il mio algoritmo in 3 parti (dato che il riempimento è uguale a 3). Il programma così funziona ma mi servirebbe l'accorpamento di questi 3 pezzo di codice :/

    codice:
     int trovato=0;
      int i=0;
      for(int j=0;j<riemp;j++)
      if(matrice[i][j]!=v[j])
       {trovato=1;}
    
       int trovato1=0;
      int l=1;
      for(int j=0;j<riemp;j++)
      if(matrice[l][j]!=v[j])
       {trovato1=1;}
    
       int trovato2=0;
      int m=2;
      for(int j=0;j<riemp;j++)
      if(matrice[m][j]!=v[j])
       {trovato2=1;}
    
    cout<<trovato<<' '<<trovato1<<' '<<trovato2;

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    E' vero, infatti pensavo funzionasse. Il problema è che non funziona

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E allora dai maggiori spiegazioni.

    Chiarisci con quali valori non funziona. Fornisci per esempio una matrice 3x3 e un vettore e dicci cosa succede.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    La matrice la leggo da file; i valori sono questi

    1 0 9
    4 6 2
    6 7 9

    Il vettore invece lo leggo da tastiera.

    Utilizzando i tre pezzi di codice separati, il programma mi riconosce quali righe sono uguali e quali no. Ad esempio:
    Input : 4 6 2
    Output: 1 0 1

    Accorpando i tre pezzi invece, succede questo
    Input:4 6 2
    Output: 1 1 1

    //Li ho accorpati in questo modo
    codice:
      
    int trovato=0;
      
      for(int i=0;i<riemp;i++)
       {
        for(int j=0;j<riemp;j++)
         if(matrice[i][j]!=v[j])
          {
            trovato=1;
          }  
            cout<<trovato<<' ';
          
       }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Qualcosa del genere ...

    codice:
    	int i, j, found; 
    	for(i=0; i<riemp; i++)
    	{
    		found=0;
    		for(j=0; j<riemp; j++)
    			if(matrice[i][j]==v[j])
    				found++;
    
    		if(found == riemp) break;
    	}
    
    	if(found == riemp)
    		printf("Trovato alla riga %d\n", i);
    	else
    		printf("Non trovato\n");
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Ohh Grazie !!!!! Funziona perfettamente. Ti vorrei chiedere un'ultima cosa: se eliminassi la funzione break (credo sia una funzione) potrei uscire lo stesso da ciclo for magari usando qualche altro stratagemma ?

    Ti ringrazio infinitamente e mi scuso per il tempo che ti ho fatto perdere

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    break è una istruzione non una funzione

    Non capisco perché non la vuoi usare ...

    Comunque, puoi modificare la prima parte del codice così

    codice:
    	int i, j, found = 0; 
    	for(i=0; i<riemp && (found<riemp); i++)
    	{
    		found=0;
    
    		for(j=0; j<riemp; j++)
    			if(matrice[i][j]==v[j])
    				found++;
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Ah grazie mille. Non vorrei usare break perché non l'ho ancora studiata. Ti ringrazio nuovamente !

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 © 2025 vBulletin Solutions, Inc. All rights reserved.