← Elenco file matrice1.c — 107 righe · 3,1 KiB · sola lettura
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>

#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 i, j, cont, trovato, tem;

    cont = 0;
    trovato = 0;
    tem = 0;
    for (i = 0; i < righe && trovato == 0; i++)
        for (j = 0; j < colonne && trovato == 0; j++) {
            cont++;
            if (cont == k) {
                tem = m[i][j];
                trovato = 1;
            }
        }
    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;
}