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:
Vi chiedo, per favore, di dirmi dove ho sbagliato e di aiutarmi a completarlo.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; }
Grazie in anticipo.

Rispondi quotando