Esercizio linguaggio -C
Salve ragazzi, ho un problema con un esercizio di ricerca di matrici in C e non riesco a capire il mio errore. Praticamente, data una matrice di dimensione N , e una più piccola di dimensione M bisogna vedere quante volte la piccola è contenuta nella grande. C'è qualcosa che non va nell'algoritmo perchè se la piccola è contenuta nelle zone ''inferiori'' della grande non funziona 
Grazie in anticipo!!

Grazie in anticipo!!
#include <stdio.h> #include <stdlib.h> #define N 5 #define M 2 int main() { int i,j,k,l,stampe=0,flag; int mat1[N][N],mat2[M][M]; printf("immetti valori matrice piu' grande.n"); for(i=0; i<N; i++) { for(j=0; j<N; j++) { scanf("%2d",&mat1[i][j]); } } for(i=0; i<N; i++) { for(j=0; j<N; j++) { printf("%d",mat1[i][j]); } printf("n"); } printf("immetti valori matrice minore.n"); for(i=0; i<M; i++) { for(j=0; j<M; j++) { scanf("%d",&mat2[i][j]); } } for(i=0; i<M; i++) { for(j=0; j<M; j++) { printf("%d",mat2[i][j]); } printf("n"); } for(i=0; i<N-M; i++) { for(j=0; j<N-M; j++) { if(mat1[i][j]==mat2[0][0]) { flag=1; printf("n%d",flag); for(k=0; k<M; k++) { for(l=0; l<M; l++) { if(mat1[i+k][j+l]!=mat2[k][l]) flag=0; printf("n%d",flag); } } if(flag) { stampe++; } } } } printf("nLa matrice minore e' contenuta %d volta/e nella maggiore",stampe); if(stampe==0) printf("Non"); return 0; }
Risposte
Ti consiglio di cercare di formattare il codice meglio, usando l'indentazione per delimitare i diversi blocchi. Non è infatti molto leggibile così com'è. La logica del programma mi sembra corretta, più tardi cerco di testarlo con un compilatore e vedere che cosa mi dice.
Grazie mille, purtroppo ho fatto copia e incolla dal compilatore
Il problema è nella condizione dei due cicli seguenti.
Dovresti fermarti a N-M compreso per cui la condizione corretta avrebbe dovuto essere:
for (i = 0; i < N - M; i++) { for (j = 0; j < N - M; j++) {
Dovresti fermarti a N-M compreso per cui la condizione corretta avrebbe dovuto essere:
for (i = 0; i <= N - M; i++) { for (j = 0; j <= N - M; j++) {
GRAZIE INFINITE!!!!!!!!!!!!!