Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define nMax 20
  4. #define rMax 100
  5.  
  6. void ruota(int v[], int N, char dir[], int P); // N = LUNGHEZZA VETTORE.
  7. void stampavettore(int v[], int n);
  8.  
  9. int main(int argc, const char * argv[]) {
  10.    
  11.     char riga[rMax];
  12.     char selettore[nMax], direzione[nMax];
  13.     int indice, pos; //FINE STRUTTURA DATI RIGA DA ACQUISIRE DA TASTIERA.
  14.     int i, j;
  15.     int nr, nc;
  16.     int m[nMax][nMax];
  17.     int v[nMax];
  18.     FILE *fp;
  19.    
  20.    
  21.     //UTILIZZO FILE.
  22.     fp = fopen("matrice.txt", "r");
  23.     if (fp == NULL) {
  24.         printf("errore apertura file\n");
  25.         return -1;
  26.     }
  27.     fscanf (fp, "%d %d\n", &nr, &nc
  28.             );
  29.     for (i = 0; i < nr; i++){
  30.         for (j = 0; j < nc; j++){
  31.             fscanf (fp, "%d", &m[i][j]);
  32.         }
  33.     }
  34.     fclose (fp);//FINE ALLOCAZIONE MATRICE.
  35.    
  36.     //ALGORITMO:
  37.     printf ("inserisci una riga\n");
  38.     fgets(riga, rMax , stdin);
  39.     sscanf (riga, "%s %d %s %d", selettore, &indice, direzione, &pos);
  40.     while (strcmp(selettore, "fine") != 0){
  41.         if (strcmp(selettore, "riga") == 0) {
  42.             for (i = 0; i < nc ; i++){
  43.                 v[i] = m[indice-1][i];
  44.             } //COPIA RIGA IN UN VETTORE PARALLELO.
  45.             ruota (v, nc, direzione, pos);
  46.         }
  47.         if(strcmp(selettore, "colonna") == 0) {
  48.             for (i = 0; i < nr ; i++ ) {
  49.                 v[i] = m[i][indice-1];
  50.             } //LINEARIZZA COLONNA.
  51.             ruota (v, nr, direzione, pos);
  52.         }
  53.     printf ("inserisci una riga\n");
  54.     scanf ("%s", riga);
  55.     sscanf (riga, "%s %d %s %d", selettore, &indice, direzione, &pos);
  56.     }
  57.    
  58.     return 0;
  59. }
  60.  
  61. void ruota ( int v[] , int N , char dir[] , int P ) {
  62.     int w[N];
  63.     int i, j = 0;
  64.    
  65.     if ( strcmp(dir, "su") == 0 || strcmp(dir, "destra") == 0) {
  66.     for ( i = N - P ; i < N ; i++ ) w[j++] = v[i];
  67.     for ( i = 0 ; i < N - P ; i++ ) w[j++] = v[i];
  68.     stampavettore(w, N);
  69.     }
  70.     else {
  71.         for (i = 0; i < P ; i++) {
  72.             w[N-P+j] = v[i];
  73.             j++;
  74.         }
  75.         j = 0;
  76.         for (i = P; i < N ; i++) {
  77.             w[j++] = v[i];
  78.         }
  79.         stampavettore(w, N);
  80.     }
  81.     return;
  82.    
  83. }
  84.  
  85. void stampavettore (int v[], int n) {
  86.     int i;
  87.     for (i = 0 ; i < n ;i++) {
  88.         printf ("%d" , v[i]);
  89.     }
  90.     return;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement