Advertisement
Derik_hacker

Untitled

Feb 13th, 2024
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.18 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main()
  7. {
  8.     int i, j,g, somma = 0, dim_r = 0, dim_c = 6;
  9.     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
  10.     char nomef[20];
  11.     FILE* fp;
  12.     float var_inutile;// variabile inutile solo per fare il conto
  13.     printf("Inserire il nome del file\n ");
  14.     scanf("%s", nomef);
  15.     // je n'ai pas trop compris pourquoi demander le noombre de colonne et de ligne?
  16.  
  17.  
  18.     //apertura lettura e verifica dell'apertura (non devi mai dimenticarlo);
  19.     fp = fopen(nomef, "r");
  20.     if (fp == NULL) {
  21.         printf("errore nell'apertura del file\n");
  22.         return EXIT_FAILURE;
  23.     }
  24.  
  25.     //verifichiamo il numero di righe contenuti dentro il file
  26.  
  27.     while (fscanf(fp, "%f %f %f %f %f %f\n", &var_inutile, &var_inutile, &var_inutile, &var_inutile, &var_inutile, &var_inutile) != EOF)
  28.     {
  29.         dim_r++;
  30.     }
  31.     // i numeri di colonne (è 6 è stato dato dalla traccia)le conosciamo già invece le righe no quindi cerchiamo di saperle  
  32. // allocazione dinamica della matrice
  33.     matrice = (float**)malloc(dim_r * sizeof(float*));
  34.     for (i = 0; i < dim_r; i++)
  35.         matrice[i] = (float*)malloc(sizeof(float) * dim_c);
  36.     //riposizioniamo l'indicatore di posizione del file all'inizio del file
  37.  
  38.     rewind(fp);
  39.  
  40.     //lettura del file
  41.  
  42.     for (i = 0; i < dim_r; i++) {
  43.         for (j = 0; j < dim_c; j++) {
  44.             fscanf(fp, "%f", &matrice[i][j]);
  45.         }
  46.     }
  47.     fclose(fp);
  48.     //stampa
  49.     for (i = 0; i < dim_r; i++) {
  50.         for (g = 0; g < dim_c; g++) {
  51.             printf("%f ", matrice[i][g]);
  52.         }
  53.         printf("\n");
  54.     }
  55.     //je n'ai pas trop compris ce que tu voulais faire ici en bas
  56.  
  57.     /* printf("calcolo somma degli elementi a vicenza dei numeri del file");
  58.  
  59.    for (i=1; i<= dim_r-1; i++ ){
  60.    for (g=1; g<= dim_c-1; g++ ){
  61.  
  62.     somma+=matrice[i-1][g-1];
  63.    }
  64.  }*/
  65.  
  66.     for (i = 1; i < dim_r - 1; i++) {
  67.         for (int j = 1; j < dim_c - 1; j++) {
  68.             float somma_vicini = 0, media_vicini;
  69.             int count = 0;
  70.  
  71.             // Calcolo della somma dei vicini
  72.             for (int k = -1; k <= 1; k++) {
  73.                 for (int l = -1; l <= 1; l++) {
  74.                     if (k != 0 || l != 0) { // Escludi l'elemento stesso
  75.                         somma_vicini += matrice[i + k][j + l];
  76.                         count++;
  77.                     }
  78.                 }
  79.             }
  80.  
  81.             // Calcolo della media
  82.             media_vicini = somma_vicini / count;// al posto di count possiamo mettere 8 è l'esercizio che l'ha detto
  83.  
  84.             // Confronto dell'elemento con la media dei vicini
  85.             printf("Elemento [%d][%d] = %f è %s della media dei suoi vicini %f\n",
  86.                 i, j, matrice[i][j], (matrice[i][j] > media_vicini) ? "maggiore" : "minore o uguale", media_vicini);
  87.         }
  88.     }
  89.  
  90.     // Liberazione della memoria
  91.     for (i = 0; i < dim_r; i++) {
  92.         free(matrice[i]);
  93.     }
  94.     free(matrice);
  95.  
  96.     return EXIT_SUCCESS;
  97. }
  98.  
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement