Advertisement
micoldivita

piramidi

Jun 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 10
  4.  
  5. int main(int argc, char *argv[])
  6. {int matrice[N][N];
  7. int riga_punta;
  8. int colonna_punta;
  9. int altezza_punta;
  10. int i=0,j=0;
  11. int attorno=0;
  12. float altezza_media;
  13. int somma;
  14. FILE *fp;
  15.  
  16. if(argc!=2){
  17.     printf("error");
  18.     return -1;
  19. }
  20. fp=fopen(argv[1],"r");
  21. if(fp==NULL){
  22.     printf("error");
  23.     return -2;
  24. }
  25. for(i=0;i<N;i++){
  26.     for(j=0;j<N;j++){
  27.         matrice[i][j]=0; //inizializzo
  28.     }
  29. }
  30. while(fscanf(fp,"%d %d %d",riga_punta,colonna_punta,altezza_punta)!=EOF){
  31.         riga_punta--; // conta da 1 in poi le posizioni e non da 0
  32.        colonna_punta--;
  33.     matrice[riga_punta][colonna_punta]=altezza_punta;
  34.     altezza_punta--; //prima di entrare nel while la nuova altezza deve decrementare
  35.     attorno=1; //primo cubo, ora scendo
  36.     while((altezza_punta>0)&&(attorno<altezza_punta)){
  37.           //riga di sopra
  38.           for(j=colonna_punta-attorno;j<colonna_punta+attorno;j++){
  39.             if(riga_punta-attorno>=0  ){
  40.                 matrice[i][j]=altezza_punta;
  41.                     altezza_punta--;
  42.                   attorno++;
  43.             }
  44.           }
  45.           //riga di sotto
  46.  
  47.           for(j=colonna_punta+attorno;j<colonna_punta+attorno;j++){
  48.             if(riga_punta+attorno<N ){
  49.                 matrice[i][j]=altezza_punta;
  50.                     altezza_punta--;
  51.                   attorno++;
  52.           }
  53.           }
  54.           //colonna a destra
  55.         for(i=riga_punta-attorno;i<riga_punta+attorno;i++){
  56.             if(colonna_punta+attorno<N ){
  57.                 matrice[i][j]=altezza_punta;
  58.                     altezza_punta--;
  59.                   attorno++;
  60.             }
  61. }
  62. //colonna a sinistra
  63. for(i=riga_punta-attorno;i<riga_punta+attorno;i++){
  64.             if(colonna_punta-attorno>0 ){
  65.                 matrice[i][j]=altezza_punta;
  66.                     altezza_punta--;
  67.                   attorno++;
  68.             }
  69. }
  70. //genero nuova matrice
  71. for(i=0;i<N;i++){
  72.     for(j=0;j<N;j++){
  73.         printf("%d",matrice[i][j]);
  74.     }
  75. }
  76.     }
  77. }
  78. somma = 0;
  79. for (i=0;i<N;i++)
  80.     {
  81.     for (j=0;j<N;j++)
  82.         {
  83.         somma=somma+matrice[i][j];
  84.         }
  85.     }
  86. altezza_media = (float) somma/(N*N);
  87. printf("l'altezza media รจ %.2f\n", altezza_media);
  88.  
  89. fp=fopen("mappa.txt","w");
  90. if(fp==NULL){
  91.     printf("error");
  92.     return -3;
  93. }
  94. fprintf(fp,"%d",matrice[i][j]);
  95. fclose(fp);
  96.  
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement