Leggere i numeri n e k(k<n) e generare una matrice quadrata A di ordine n con numeri interi casuali minori di 50. Stamapre la matrice.
Stampare tutte le sottomatrici quadrate di ordine k la cui somma degli elementi sia dispari.
Esempio: Sia n=4 e k=3 e supponiamo che la matrice generata sia:
26 30 48 32
6 0 44 1
23 11 29 16
12 41 24 6
allora vengono stampate le due sottomatrici:
26 30 48
6 0 44
23 11 29
30 48 32
0 44 1
11 29 16
Questo è ciò che ho provato a fare io:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
void generamatrice (int A[MAX][MAX], int n);
void stampamatrice(int A[MAX][MAX], int n);
main(){
int A[MAX][MAX], n, m, k, j, i, somma;
printf("Inserisci l'ordine della matrice: \n");
scanf("%d", &n);
generamatrice(A, n);
stampamatrice(A, n);
printf("Inserisci l'ordine delle sottomatrici: \n");
scanf("%d", &k);
somma=0;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
for(i=0; i<k; i++){
for(j=0; j<k; j++){
somma = somma + A[i][j];
}
}
if(somma % 2 != 0){
printf("%d", A[i][j]);
printf("\n");
}
}
}
return;
system("PAUSE");
}
void generamatrice (int A[MAX][MAX], int n)
{
int i, j;
srand(time(NULL));
for(i=0; i<n; i++){
for(j=0; j<n; j++)
A[i][j] rand () % (1) + 25;
}
return;
}
void stampamatrice(int A[MAX][MAX], int n)
{
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++)
printf("%d", A[i][j]);
printf("\n");
}
return;
}
Vi chiedo, per favore, di dirmi dove ho sbagliato e di aiutarmi a completarlo.
Grazie in anticipo.