home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / CataniaB / teach-act / testi-esami / labo-7.00 / parte2-3.c < prev    next >
C/C++ Source or Header  |  2001-01-29  |  1KB  |  95 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4.  
  5.  
  6. /* tipi */
  7.  
  8. typedef unsigned char bool;
  9. typedef int elem;
  10.  
  11. typedef struct tsucc {
  12.                         elem info[MAX];
  13.                         int lg;
  14.                     } succ;
  15.  
  16. /* prototipi */
  17.  
  18. succ empty();
  19. void insert(elem,succ *);
  20. void print(succ);
  21. bool is_pal(succ s);
  22.  
  23. /* main */
  24.  
  25. int main()
  26. {
  27.     succ s = empty();
  28.     int m;
  29.     FILE *fp;
  30.     char nome_f[20];
  31.     
  32.     printf("\nInserire il nome del file ");
  33.     scanf("%s",nome_f);
  34.  
  35.     fp=fopen(nome_f,"r");
  36.  
  37.     while (fscanf(fp,"%d",&m) && (m!=-1))
  38.     {
  39.         insert(m,&s);
  40.     }
  41.     printf("La successione e': ");
  42.     print(s);
  43.  
  44.     if (is_pal(s)) printf("\nLa successione e' palindroma");
  45.         else printf("\nLa successione non e' palindroma");
  46. }
  47.  
  48.  
  49.  
  50.  
  51. succ empty()
  52. {
  53.   succ s;
  54.   s.lg = 0;
  55.   return s;
  56. }
  57.  
  58. void insert(elem el,succ *s)
  59. {
  60.     if (s->lg == MAX)
  61.         {
  62.             printf("Errore: spazio insufficiente");
  63.             exit(EXIT_FAILURE);
  64.         }
  65.   s->info[s->lg] = el;
  66.   s->lg++;
  67. }
  68.  
  69.  
  70. void print(succ s)
  71. {
  72.   int i;
  73.   printf("{ ");
  74.   for (i=0;i< s.lg;i++)
  75.     { 
  76.         printf("%d ",s.info[i]);
  77.     }
  78.   printf("}\n");
  79. }
  80.  
  81.  
  82.  
  83. bool is_pal(succ s)
  84. {   
  85.     int i;
  86.     for (i=0;i< s.lg/2;i++)
  87.       if (s.info[i] != s.info[s.lg -i-1])
  88.              return 0;
  89.     return 1;     
  90.  
  91. }
  92.  
  93.  
  94.  
  95.