Salve! sono nuovo tanto nel forum che nell'utilizzo di C e infatti vi scrivo per affrontare un problema che da giorni non trova soluzione . Vi ripropongo la traccia e successivamente il mio tentativo di soluzione (sperando di non aver fatto stupidaggini troppo gravi)
"Si scriva un programma C che:
- legga da tastiera (per righe o per colonne, a scelta) una matrice quadrata di dimensione uguale a 5 righe e 5 colonne;
- rintracci se tale matrice contiene delle sequenze di elementi adiacenti uguali a zero di lunghezza uguale o maggiore di 3;
- visualizzi l'indice di riga in cui tali sequenze si presentano.
Esempio. Sia la matrice seguente:
0 0 0 4 5
1 2 0 4 5
1 0 0 4 0
1 2 3 4 5
1 0 0 0 0
La sequenza di valori '0 0 0' compare nella prima e nell'ultima riga."
Dopo aver caricato la matrice, ho cercato di risolvere il secondo punto attraverso l'utilizzo di cicli for. Purtroppo credo di aver fatto fesserie:
#include <stdio.h>
int main ()
{ int v[5][5];
int i,j,k,u=0;
printf("Carica la matrice di numeri:\n");
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
scanf("%d ",&v[i][j]);
}
}
for (i=0; i<5; i++)
{
for (j=0; j<3; j++)
{
for (k=j; k<2+j; k++)
{
if (v[i][k]==0)
{
u++;
}
}
if (u>=3)
{
printf("\nLa sequenza compare nella riga %d",i+1);
}
}
}
return 0;
}
Ora...il programma non restituisce ciò che mi aspetto...potreste consigliarmi un percorso logico da seguire per la risoluzione?
Inoltre...
Nel tentativo di elaborare una soluzione alternativa o almeno più compatta, ho pensato di utilizzare (giacchè la traccia non me lo vieta) una matrice di caratteri avente per righe delle stringhe. In questo modo potrei sfruttare, attraverso l'header file string.h, la funzione strstr per cercare la sottostringa '0,0,0' all'interno del vettore riga. Credete che come soluzione possa funzionare?
Grazie per l'attenzione