Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAXRIGA 512
- #define MAXSTR 128
- #define PAROLA 128
- int palindroma(char s[])
- {
- char contrario[MAXSTR];
- int i, lung;
- lung=(int)strlen(s);
- // printf("%s",s);
- for (i=0; i<lung; i++)
- s[i]=(char)tolower(s[i]); // meetto tutto in minuscolo
- // printf("%s\n",a);
- for (i=0; i<lung; i++)
- contrario[i]=s[lung-1-i]; // inverto la parola
- contrario[lung]='\0'; // inserisco il carattere NULL
- // printf("%s\n",d);
- if (strcmp(s, contrario)==0)
- //printf("%s: Palindroma\n",a);
- return 0; // ritorno 0 se palindromo
- else
- //printf("%s: Non palindroma\n",a);
- return 1; // ritorno 1 se palindrom
- return 0;
- }
- int main()
- {
- int nopal=0;
- int sipal=0;
- int i, pal;
- char file[FILENAME_MAX],a[MAXRIGA],p[PAROLA];
- FILE *fp;
- printf("Nome del file da leggere: ");
- gets(file);
- if ( (fp=fopen(file,"r")) == NULL )
- {
- fprintf(stderr, "Impossibile aprire il file %s\n", file);
- return EXIT_FAILURE;
- }
- while (fgets(a,MAXRIGA+1,fp) != NULL)
- {
- char *tokenPtr = strtok(a, "?!',;.\n "); // trova il primo token
- while (tokenPtr != NULL)
- {
- // printf("%s\n", tokenPtr);
- tokenPtr[*tokenPtr]='\0';
- pal = palindroma(tokenPtr); // Chiamata alla funzione alla fine della funzione mi ritorna il risultato
- if (pal == 0)
- {
- printf("%s: Palindromo\n",tokenPtr);
- sipal++; //incremento il contatore delle parole palindrome
- }
- else
- {
- printf("%s: Non Palindromo\n",tokenPtr);
- nopal++; // incremento il contatore delle parole non palindrome
- }
- tokenPtr = strtok(NULL, "?!',;.\n "); // trova il successivo token
- }
- }
- printf("\nTotale parole: %i \nTotale parole palindrome: %i \nTotale parole non palindrome: %i",nopal+sipal, sipal, nopal);
- // per determinare il totale mi รจ bastato ovviamente sommare i due contatori
- fclose(fp);
- return EXIT_SUCCESS;
- }
Add Comment
Please, Sign In to add comment