Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- int i, j,g, somma = 0, dim_r = 0, dim_c = 6;
- float** matrice;// ta matrice doit etre en float e non en int vu que les nombres que tu dois prendre dans le file son de type float la matrice qui doit les contenir doivent etre du meme type
- char nomef[20];
- FILE* fp;
- float var_inutile;// variabile inutile solo per fare il conto
- printf("Inserire il nome del file\n ");
- scanf("%s", nomef);
- // je n'ai pas trop compris pourquoi demander le noombre de colonne et de ligne?
- //apertura lettura e verifica dell'apertura (non devi mai dimenticarlo);
- fp = fopen(nomef, "r");
- if (fp == NULL) {
- printf("errore nell'apertura del file\n");
- return EXIT_FAILURE;
- }
- //verifichiamo il numero di righe contenuti dentro il file
- while (fscanf(fp, "%f %f %f %f %f %f\n", &var_inutile, &var_inutile, &var_inutile, &var_inutile, &var_inutile, &var_inutile) != EOF)
- {
- dim_r++;
- }
- // i numeri di colonne (è 6 è stato dato dalla traccia)le conosciamo già invece le righe no quindi cerchiamo di saperle
- // allocazione dinamica della matrice
- matrice = (float**)malloc(dim_r * sizeof(float*));
- for (i = 0; i < dim_r; i++)
- matrice[i] = (float*)malloc(sizeof(float) * dim_c);
- //riposizioniamo l'indicatore di posizione del file all'inizio del file
- rewind(fp);
- //lettura del file
- for (i = 0; i < dim_r; i++) {
- for (j = 0; j < dim_c; j++) {
- fscanf(fp, "%f", &matrice[i][j]);
- }
- }
- fclose(fp);
- //stampa
- for (i = 0; i < dim_r; i++) {
- for (g = 0; g < dim_c; g++) {
- printf("%f ", matrice[i][g]);
- }
- printf("\n");
- }
- //je n'ai pas trop compris ce que tu voulais faire ici en bas
- /* printf("calcolo somma degli elementi a vicenza dei numeri del file");
- for (i=1; i<= dim_r-1; i++ ){
- for (g=1; g<= dim_c-1; g++ ){
- somma+=matrice[i-1][g-1];
- }
- }*/
- for (i = 1; i < dim_r - 1; i++) {
- for (int j = 1; j < dim_c - 1; j++) {
- float somma_vicini = 0, media_vicini;
- int count = 0;
- // Calcolo della somma dei vicini
- for (int k = -1; k <= 1; k++) {
- for (int l = -1; l <= 1; l++) {
- if (k != 0 || l != 0) { // Escludi l'elemento stesso
- somma_vicini += matrice[i + k][j + l];
- count++;
- }
- }
- }
- // Calcolo della media
- media_vicini = somma_vicini / count;// al posto di count possiamo mettere 8 è l'esercizio che l'ha detto
- // Confronto dell'elemento con la media dei vicini
- printf("Elemento [%d][%d] = %f è %s della media dei suoi vicini %f\n",
- i, j, matrice[i][j], (matrice[i][j] > media_vicini) ? "maggiore" : "minore o uguale", media_vicini);
- }
- }
- // Liberazione della memoria
- for (i = 0; i < dim_r; i++) {
- free(matrice[i]);
- }
- free(matrice);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement