Advertisement
Jordimario

Matrice a Spirale

Feb 17th, 2018
510
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4. ///Jordi Cabrera Carpio 3Aif
  5. ///Crea Una Matrice Da input e la ri-organizza in un'altra Matrice in Ordine a Spirale Partendo da Basso a Sinistra in senso Orario
  6.  
  7. int main()
  8. {
  9.     ///Dichiarazione Variabili
  10.         ///Elementi Prima Matrice
  11.     int vet[MAX][MAX];///Matrice Normale
  12.     int riga=0;///Altezza
  13.     int colonna=0;///Larghezza
  14.     int r=1;///Coordinata di Altezza
  15.     int c=1;///Coordinata di Larghezza
  16.  
  17.         ///Elementi Seconda Matrice
  18.     int spirale[MAX][MAX];///Matrice Per Spirale
  19.     int x=0;///Coordinata di Altezza (Normalmente dovrebbe essere L'inverso)
  20.     int y=0;///Coordinata di Larghezza (Normalmente dovrebbe essere L'inverso)
  21.     int colonnaf;///Larghezza
  22.     int rigaf;///Altezza
  23.  
  24.         ///Contatore
  25.     int n=1;
  26.     ///Fine Dichiarazioni
  27.  
  28.  
  29.     ///Programma
  30.  
  31.         ///Costruzione Matrice
  32.             ///Ampiezza Matrice
  33.     printf("Larghezza Matrice\n");
  34.     while(riga<=0){
  35.     printf("Inserisci il Numero Delle righe\n");
  36.     scanf("%d",&riga);
  37.     if(riga<=0){
  38.         printf("Il Numero deve essere Maggiore di 0\n");
  39.     }
  40.     }
  41.  
  42.     while(colonna<=0){
  43.     printf("Inserisci il Numero delle colonne\n");
  44.     scanf("%d",&colonna);
  45.     if(colonna<=0){
  46.         printf("Il Numero deve essere Maggiore di 0\n");
  47.     }
  48.     }
  49.  
  50.             ///Ciclo per inserire dati dentro la Matrice
  51.          while(riga>=r){
  52.         printf("Riga %d Colonna %d\n",r,c);
  53.         scanf("%d",&vet[r][c]);
  54.        ///* RIPORTO *///
  55.         c++;
  56.         if(c>colonna)
  57.         {
  58.             c=1;
  59.             r++;
  60.         }
  61.         ///* FINE RIPORTO *///
  62.     }
  63.     r=1;///ripota a 1 la riga
  64.  
  65.             ///Mostra Matrice
  66.     printf("I Dati della Matrice Sono\n");
  67.              while(riga>=r){
  68.         printf("[%d]", vet[r][c]);
  69.  
  70.         ///* RIPORTO PRINTF *///
  71.         c++;
  72.         if(c>colonna)
  73.         {
  74.             printf("\n");
  75.             c=1;
  76.             r++;
  77.         }
  78.         ///* FINE RIPORTO PRINTF *///
  79.     }
  80.             ///Fine costruzione Matrice
  81.  
  82.         ///inizializzazione
  83.     colonnaf=colonna;
  84.     rigaf=riga;
  85.    r=1;
  86.    x=riga;
  87.    y=1;
  88.    c=1;
  89.         ///Fine inizializzazione
  90.  
  91.     ///Costruzione Spirale
  92.         ///Prima spirale (contorno)
  93.  
  94.             ///Su
  95.             while(x>1){
  96.         spirale[x][y]=vet[r][c];
  97.         ///* RIPORTO *///
  98.         c++;
  99.         x--;
  100.         if(c>colonnaf)
  101.         {
  102.             c=1;
  103.             r++;
  104.         }
  105.         ///* FINE RIPORTO *///
  106.        }
  107.  
  108.  
  109.             ///Destra
  110.             while(y<colonna){
  111.         spirale[x][y]=vet[r][c];
  112.         ///* RIPORTO *///
  113.         c++;
  114.         y++;
  115.         if(c>colonnaf)
  116.         {
  117.             c=1;
  118.             r++;
  119.         }
  120.         ///* FINE RIPORTO *///
  121.        }
  122.  
  123.  
  124.             ///Giu
  125.             while(x<riga){
  126.      spirale[x][y]=vet[r][c];
  127.         ///* RIPORTO *///
  128.         c++;
  129.         x++;
  130.         if(c>colonnaf)
  131.         {
  132.             c=1;
  133.             r++;
  134.         }
  135.         ///* FINE RIPORTO *///
  136.        }
  137.  
  138.  
  139.        ///Il Resto Della Spirale
  140.        colonna--;
  141. {
  142.    while(colonna!=1 && riga!=1)
  143.    {
  144.  
  145.                 ///Sinistra
  146.  
  147.             while(n!=colonna){
  148.      spirale[x][y]=vet[r][c];
  149.          y--;
  150.          n++;
  151.         ///* RIPORTO *///
  152.         c++;
  153.         if(c>colonnaf)
  154.         {
  155.             c=1;
  156.             r++;
  157.         }
  158.  
  159.         ///* FINE RIPORTO *///
  160.  
  161.        }
  162.  
  163.                 riga--;
  164.                 n=1;
  165.  
  166.                 ///Su
  167.  
  168. if(colonna!=1 && riga!=1){
  169.             while(n!=riga){
  170.      spirale[x][y]=vet[r][c];
  171.         x--;
  172.         n++;
  173.         ///* RIPORTO *///
  174.         c++;
  175.         if(c>colonnaf)
  176.         {
  177.             c=1;
  178.             r++;
  179.         }
  180.         ///* FINE RIPORTO *///
  181.        }
  182. }
  183.  
  184.                 ///Destra
  185.  
  186. if(colonna!=1 && riga!=1){
  187.             colonna--;
  188.             n=1;
  189.             while(n!=colonna){
  190.      spirale[x][y]=vet[r][c];
  191.         y++;
  192.         n++;
  193.         ///* RIPORTO *///
  194.         c++;
  195.         if(c>colonnaf)
  196.         {
  197.             c=1;
  198.             r++;
  199.         }
  200.         ///* FINE RIPORTO *///
  201.        }
  202. }
  203.  
  204.                 ///Giu
  205.  
  206. if(colonna!=1 && riga!=1){
  207.                 riga--;
  208.                 n=1;
  209.             while(n!=riga){
  210.      spirale[x][y]=vet[r][c];
  211.         x++;
  212.         n++;
  213.         ///* RIPORTO *///
  214.         c++;
  215.         if(c>colonnaf)
  216.         {
  217.             c=1;
  218.             r++;
  219.         }
  220.         ///* FINE RIPORTO *///
  221.        }
  222.  
  223.             colonna--;
  224.             n=1;
  225.    }
  226.    }
  227. }
  228.     ///Fine Costruzione Spirale
  229.  
  230.       ///Mostra Spirale
  231.        spirale[x][y]=vet[r][c];
  232.       x=1;
  233.       y=1;
  234.       printf("--------------------------------\n");
  235.              while(rigaf>=x){
  236.         printf("[%d]", spirale[x][y]);
  237.         ++y;
  238.         ///* RIPORTO PRINTF *///
  239.         if(y==colonnaf+1)
  240.         {
  241.             printf("\n");
  242. y=1;
  243.             x++;
  244.         }
  245.         ///* FINE RIPORTO PRINTF *///
  246.     }
  247.  
  248.     return 0;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement