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.
/***
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>
// Funzione stampaMatrice (serve a visualizzare la matrice a video)
void stampaMatrice(int righe, int colonne, int m[][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 righe, int colonne, int m[][colonne], 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 *inizio, int k) {
int *p, tem;
p = inizio + k - 1; // l'elemento in posizione k si trova dopo k - 1 indirizzi partendo dall'inizio
tem = *p; // valore che si trova all'indirizzo inizio + k - 1
return tem;
}
// Funzione contaDivisibili (conta quanti elementi della matrice sono divisibili per tem)
int contaDivisibili(int *inizio, int tot, int tem) {
int *p, divisibili;
divisibili = 0;
for (p = inizio; p < inizio + tot; p++)
if (*p % tem == 0)
divisibili++;
return divisibili;
}
// Funzione principale (main - le funzioni vengono chiamate all'interno)
int main() {
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);
// Dichiaro la matrice solo dopo aver ottenuto le dimensioni dal file
int m[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(righe, colonne, m);
// B) Visualizza la colonna scelta dall'utente
printf("\nQuale colonna vuoi visualizzare? ");
scanf("%d", &n);
stampaColonna(righe, colonne, m, n);
// C) Trova l'elemento in posizione K e conta i divisibili
printf("\nInserisci K: ");
scanf("%d", &k);
tem = trovaElemento(&m[0][0], 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[0][0], righe * colonne, tem);
printf("Gli elementi divisibili per %d sono: %d\n", tem, divisibili);
}
return 0;
}