iz2rpn

palindroma

Mar 28th, 2022 (edited)
766
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAXRIGA 512
  6. #define MAXSTR 128
  7. #define PAROLA 128
  8.  
  9.  
  10. int palindroma(char s[])
  11. {
  12.     char contrario[MAXSTR];
  13.     int i, lung;
  14.     lung=(int)strlen(s);
  15.     // printf("%s",s);
  16.     for (i=0; i<lung; i++)
  17.         s[i]=(char)tolower(s[i]); // meetto tutto in minuscolo
  18.     // printf("%s\n",a);
  19.     for (i=0; i<lung; i++)
  20.         contrario[i]=s[lung-1-i]; // inverto la parola
  21.     contrario[lung]='\0'; // inserisco il carattere NULL
  22.     // printf("%s\n",d);
  23.  
  24.     if (strcmp(s, contrario)==0)
  25.         //printf("%s: Palindroma\n",a);
  26.         return 0; // ritorno 0 se palindromo
  27.     else
  28.         //printf("%s: Non palindroma\n",a);
  29.         return 1; // ritorno 1 se palindrom
  30.     return 0;
  31. }
  32.  
  33. int main()
  34. {
  35.     int nopal=0;
  36.     int sipal=0;
  37.     int i, pal;
  38.     char file[FILENAME_MAX],a[MAXRIGA],p[PAROLA];
  39.     FILE *fp;
  40.  
  41.     printf("Nome del file da leggere: ");
  42.     gets(file);
  43.  
  44.     if ( (fp=fopen(file,"r")) == NULL )
  45.     {
  46.         fprintf(stderr, "Impossibile aprire il file %s\n", file);
  47.  
  48.         return EXIT_FAILURE;
  49.     }
  50.  
  51.  
  52.     while (fgets(a,MAXRIGA+1,fp) != NULL)
  53.     {
  54.         char *tokenPtr = strtok(a, "?!',;.\n  "); // trova il primo token
  55.  
  56.         while (tokenPtr != NULL)
  57.         {
  58.             // printf("%s\n", tokenPtr);
  59.             tokenPtr[*tokenPtr]='\0';
  60.             pal = palindroma(tokenPtr); // Chiamata alla funzione alla fine della funzione mi ritorna il risultato
  61.  
  62.             if (pal == 0)
  63.             {
  64.                 printf("%s: Palindromo\n",tokenPtr);
  65.                 sipal++; //incremento il contatore delle parole palindrome
  66.             }
  67.             else
  68.             {
  69.                 printf("%s: Non Palindromo\n",tokenPtr);
  70.                 nopal++; // incremento il contatore delle parole non palindrome
  71.             }
  72.             tokenPtr = strtok(NULL, "?!',;.\n "); // trova il successivo token
  73.  
  74.         }
  75.     }
  76.     printf("\nTotale parole: %i \nTotale parole palindrome: %i  \nTotale parole non palindrome: %i",nopal+sipal, sipal, nopal);
  77.     // per determinare il totale mi รจ bastato ovviamente sommare i due contatori
  78.     fclose(fp);
  79.     return EXIT_SUCCESS;
  80.  
  81. }
  82.  
Add Comment
Please, Sign In to add comment