Il visualizzatore con evidenziazione non si è caricato
(manca cm6.bundle.js o dmautone-shared non è raggiungibile):
il file è mostrato come testo semplice, sempre in sola lettura.
/***
2. Dato un file matrice.txt (ad esempio come quello qui sotto, ove i due primi numeri interi
stabiliscono rispettivamente le righe e le colonne di una matrice) caricare in una matrice M
in memoria il file e poi visualizzare a video:
A) la matrice
B) gli elementi della colonna N (chiedi N da tastiera)
C) quanti elementi della matrice sono divisibili per l'elemento K (Chiedi K da tastiera. Se
K=6 e la matrice e' quella qui sotto, il valore corrispondente e' 0, cioe' il sesto numero
partendo dall'elemento 0,0)
3 4
2 3 4 5
8 0 7 2
4 4 9 8
***/
#include <stdio.h>
#define MAX 100
// Funzione stampaMatrice (serve a visualizzare la matrice a video)
void stampaMatrice(int m[][MAX], int righe, int colonne) {
int i, j;
for (i = 0; i < righe; i++) {
for (j = 0; j < colonne; j++)
printf("%3d ", m[i][j]);
printf("\n");
}
}
// Funzione stampaColonna (serve a visualizzare la colonna scelta a video)
void stampaColonna(int m[][MAX], int righe, int n) {
int i;
printf("Elementi della colonna %d:\n", n);
for (i = 0; i < righe; i++)
printf("%d\n", m[i][n]);
}
// Funzione trovaElemento (serve a trovare l'elemento k corrispondente all'interno della matrice)
int trovaElemento(int m[][MAX], int righe, int colonne, int k) {
int tem;
tem = m[(k - 1) / colonne][(k - 1) % colonne];
return tem;
}
// Funzione contaDivisibili (conta quanti elementi della matrice sono divisibili per tem)
int contaDivisibili(int m[][MAX], int righe, int colonne, int tem) {
int i, j, divisibili;
divisibili = 0;
for (i = 0; i < righe; i++)
for (j = 0; j < colonne; j++)
if (m[i][j] % tem == 0)
divisibili++;
return divisibili;
}
// Funzione principale (main - le funzioni vengono chiamate all'interno)
int main() {
int m[MAX][MAX];
int righe, colonne;
int i, j, n, k, tem, divisibili;
FILE *f;
// Caricamento del file nella matrice
f = fopen("matrice.txt", "r");
fscanf(f, "%d %d", &righe, &colonne);
for (i = 0; i < righe; i++)
for (j = 0; j < colonne; j++)
fscanf(f, "%d", &m[i][j]);
fclose(f);
// A) Visualizza la matrice
printf("Matrice caricata dal file:\n");
stampaMatrice(m, righe, colonne);
// B) Visualizza la colonna scelta dall'utente
printf("\nQuale colonna vuoi visualizzare? ");
scanf("%d", &n);
stampaColonna(m, righe, n);
// C) Trova l'elemento in posizione K e conta i divisibili
printf("\nInserisci K: ");
scanf("%d", &k);
tem = trovaElemento(m, righe, colonne, k);
printf("L'elemento in posizione %d e': %d\n", k, tem);
if (tem == 0)
printf("Nessun elemento e' divisibile per 0\n");
else {
divisibili = contaDivisibili(m, righe, colonne, tem);
printf("Gli elementi divisibili per %d sono: %d\n", tem, divisibili);
}
return 0;
}