Verifica proprietà colonne di matrice

di il
4 risposte

Verifica proprietà colonne di matrice

Buongiorno, chiedo un aiutino a tutti voi!
Devo effettuare l'inserimento di un display di immagini, ossia una matrice quadrata i cui elementi della matrice sono caratterizzati da due interi, livello di grigio e difettosità. L'algoritmo richiesto è quello di verificare il numero di colonne che presentano come secondo campo tutti i valori pari a -1, ossia il numero di colonne difettose.

Ragionamento: controllo sì ogni colonna, ma non ogni riga. Infatti, non appena trovo un elemento diverso da -1, posso saltare direttamente alla colonna successiva.
int col_bruciate(const Immagine I[][MAX],const int n){
	int i=0,j=0;
	bool condizione=true;
	int bruciata=0;
 
	for(int j=0;j<n;j++){
		while(i<n && condizione){
			if(I[i][j].Difettosita!=-1){
			condizione=false;
			}
   		i++;
   	}
   	if(condizione) bruciata++;
   	}
   	return bruciata;
}
Se vi scrivo è perché ovviamente il codice non funziona, quindi qualche suggerimento? Grazie mille

4 Risposte

  • Re: Verifica proprietà colonne di matrice

    Dovresti specificare meglio il problema perché è contraddittorio.

    Devi elencare le colonne che hanno almeno una difettosità o contare quanti elementi in ogni colonna presentano difettosità?

    Comunque, mostra anche il main con cui provi la funzione.
  • Re: Verifica proprietà colonne di matrice

    Oddio, mi scuso se mi sono spiegata male!
    Ecco, bisogna contare il numero di colonne che presentano tutti i pixel del campo difettosità pari a -1.
    Esempio:
    Il display visualizza i seguenti pixel:
    (7, -1) (4, 0) (4, 0) (8, 0)
    (4, -1) (3, 0) (3, -1) (8, 0)
    (5, -1) (2, -1) (0, -1) (7, 0)
    (5, -1) (2, -1) (0, -1) (7, 0)

    Il display presenta 1 linee verticali di pixel bruciati.
  • Re: Verifica proprietà colonne di matrice

    Allora occhio alla reinizializzazione dell'indice di riga e di condizione nel ciclo for ... non basta impostarli all'inizio, anzi, non serve ...
    
    	int rig, col;
    	bool condizione;
    	int bruciata = 0;
    
    	for (col = 0; col<n; col++)
    	{
    		rig = 0;
    		condizione = true;
    		while (rig<n && condizione) {
    			if (I[rig][col].Difettosita != -1) condizione = false;		
    			rig++;
    		}
    
    		if (condizione) bruciata++;
    	}
    
    	return bruciata;
    
  • Re: Verifica proprietà colonne di matrice

    Sì, la doppia reinizializzazione mi è sfuggita perché provando diversi codici, ho dimenticato di controllare, mea culpa.
    Quindi, erano quelle due condizioni tra il for e il while a fregarmi, bene. Anzi male!
    Grazie mille, comunque
Devi accedere o registrarti per scrivere nel forum
4 risposte