elelomb

parolepalindrome

May 10th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<ctype.h> /*mi servirà per la funzione tolower*/
  4.  
  5. typedef char* pchar;
  6.  
  7. /*riprendo la funzione fatta in passato per calcolare la lunghezza di una stringa perchè mi sarà utile durante il programma*/
  8.  
  9. /*funzione che calcola il numero di caratteri di una stringa*/
  10. int lunghezza_s(pchar s)
  11.  
  12. {
  13. int n;
  14. pchar pcaratteri;
  15. for(n=0; *s!='\0'; s++)
  16. n++;
  17. return n;
  18. pcaratteri=(pchar)malloc(n); //ometto sizeof(char) perchè è inutile moltiplicare per uno
  19. if (pcaratteri==NULL)
  20. { printf("non c'è sufficiente spazio in memoria\n");
  21. return EXIT_FAILURE ;
  22. }
  23. }
  24.  
  25. #define MAXDIM 30
  26.  
  27. int main(void)
  28. {
  29. char parola [MAXDIM+1]; /*il +1 serve a ricordarMI che la stringa conterrà il carattere di fine stringa*/
  30. int num_caratteri, palindroma,n,i; /*palindroma mi servirà come flag, mi darà 0 o 1 in base al verificarsi o meno della condizione*/
  31.  
  32. /*userò due puntatori, il primo punterà al primo carattere della stringa, il secondo all'ultimo (-1) per non farlo puntare al carattere di fine stringa*/
  33. pchar pi,pf;
  34.  
  35. printf ("Inserisci una parola al più di %d caratteri: \n", MAXDIM);
  36. scanf ("%s",parola);
  37. printf ("La parola inserita è %s e contiene %d caratteri. \n", parola, lunghezza_s(parola));
  38.  
  39. n=lunghezza_s(parola);
  40.  
  41. for (i=0; i<n; i++)
  42. {
  43. parola[i]=tolower(parola[i]); /*converto la parola tutta in minuscolo*/
  44. }
  45. printf ("La parola convertita in minuscolo è:%s \n",parola);
  46.  
  47. palindroma=1;
  48.  
  49. pi=parola;
  50. pf=parola+n-1;
  51.  
  52. /*il seguente ciclo for analizza l'intera parola, il primo puntatore si occupa della prima metà, mentre il secondo della seconda metà, partendo infatti dall'ultimo carattere. Il ciclo termina quando si trova che la parola o non è palindroma o sono stati analizzati tutti i caratteri.*/
  53.  
  54. for(;pi<=pf && palindroma==1; pi++, pf--)
  55. {
  56. if(*pi!=*pf)
  57. palindroma=0;
  58. }
  59.  
  60. if (palindroma==1)
  61. printf ("La parola %s è palindroma\n",parola);
  62. else
  63. printf ("La parola %s non è palindroma\n",parola);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment