Ciao
ma non metti la condizione per la quale j+x > di lunghezza?
ho notato che ripeti 2 volte la stessa condizione
executioner ha scritto:
if((array[j]=='A' && array[j+1]=='A') || (array[j]=='A' && array[j+1]=='A')
ammenochè non ci sia un errore di battitura tutte le prime 2 condizioni sono identiche.
se ho capito bene dal codice
devi verificare che 2 elementi di una riga di matrice siano uguali.
se ho capito bene secondo me la soluzione ideale sarebbe:
\ x= numero di righe
\ y= numero di colonne
int w,k,c;
for (int i=0;i<x:i++)
{
w=array[i][0];
for (int j=1;j<y;j++)
{
c=w
if (j+1>y) k=array[i][y] else k=array[i][j+1]
w=w-k;
if (k==0) fa quello che deve fare
w=c;
w=w-array[i][j];
k=k-array[i][j];
if (w==0) fa quello che deve fare
if (k==0) fa quello che deve fare
w=array[i][j];
}
}
cosi dovrebbe essere più performante.
spiegazione
k,w,c tre variabili di comodo
k punta al elemento j+1
w inizialmente punta al primo elemento della riga
c conserva il primo elemento.
[code]if (j+1>y) k=array[i][y] else k=array[i][j+1]
verifica che k non sfondi la matrice
w=w-k;
if (k==0) fa quello che deve fare
verifica che il primo e j+1 siano uguali
w=c; / rimetti le cose a posto
w=w-array[i][j]; /verifica che elemento precedente della matrice sia = al corrente
k=k-array[i][j]; / verifica che elemento corrente della matrice sia = al successivo
if (w==0) fa quello che deve fare /condizione verificata
if (k==0) fa quello che deve fare /condizione verificata
w=array[i][j]; /elemento corrente diventa il precedente
altra soluzione che mi è venuta in mente è:
for (int i=0;i<x;i++)
{
for (int j=0;j<y;j++)
{
for (int w=1;w<y;w++)
{
c=array[i][j];
c=c-array[i][w];
if (c==0) fai quello che vuoi
/prossimo elemento da dare in pasto al ciclo
}
}
}
quest'ultima non te la commento perchè di per se chiara.
spero di esserti stato d'aiuto.