Altro programma che come sempre mi pare giusto l' algoritmo (l'ho verificato a mano tante e tante volte, quindi a meno che non sia demente e non mi sia sempre impicciato in teoria dovrebbe tornare) e che comunque non va
Si scriva un programma che chiede all’utente di riempire una matrice NxN (con N costante globale predefinita) di interi e stampa la lunghezza della sequenza più lunga orizzontale, verticale o diagonale di numeri uguali consecutivi.
#include <stdio.h>
#define N 5
int main()
{int i,j,v[N][N],cont=0,max=0;
char inutile;
while (i<N)
{j=0;
while (j<N)
{printf("inserire numero\n");
scanf("%d",&v[j]);
j++;}
i++;}
for (i=0;i<N;i++)
{for (j=0;j<N;j++)
{if (j!=N-1)
{printf("%d", v[j]);
printf(" ");}
else if (j=N-1)
{printf("%d", v[j]);
printf("\n");}
}}
for(i=0;i<N;i++)
{cont=0;
for(j=1;j<N;j++)
{if(v[j]==v[j-1])
{cont++;
}
if(cont>max)
{max=cont;
}
else cont=0;
}
}
for(i=0;i<N;i++)
{cont=0;
for(j=1;j<N;j++)
{if(v[j]==v[j-1])
{cont++;
}
if(cont>max)
{max=cont;
}
else cont=0;
}
}
for(i=0;i<N;i++)
{ cont=0;
for(j=1;j<N-1;j++)
{if (v[j][j+1]==v[j+1][j+1+i]){cont++;}
if(cont>max)
{max=cont;}
else cont=0;}}
for(i=0;i<N;i++)
{cont=0;
for (j=1;j<N-1;j++)
{if(v[j+1+1][j]==v[j+i][j-1]){cont++;}
if(cont>max){max=cont;}
else cont=0;
}
}
for(i=0;i<N;i++)
{cont=0;
for(j=1;j<N-1;j++)
{if(v[j][N-2-j-i]==v[j-1][N-1-j-i]){cont++;}
if(cont>max)
{max=cont;}
else cont=0;
}
}
for(i=0;i<N;i++)
{cont=0;
for(j=1;j<N-1;j++)
{if(v[j+i+1][N-j-1]==v[j+i][N-j]){cont++;}
if(cont>max)
{max=cont;}
else cont=0;
}
}
max=max+1;
printf("la lunghezza massima è\n");
printf("%d",max);
fflush(stdin);
scanf("%c",&inutile);
return 0;
}