Advertisement
Guest User

PALINDROMA CON PUNTATORI_DEF

a guest
Nov 22nd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. /*Verificare se una stringa è palindroma; se lo è si comunica, se non lo è la si inverte.*/
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. int scegli_opzione(void);
  7. void leggi_stringa(char *,int *);
  8. int pal(char *, int);
  9. void reverse(char *, int);
  10. int stampa_risposta(char *, int);
  11.  
  12. int main(void)
  13. { char stringa[100];
  14. int opzione, dim_str, temp=1, ris;
  15. do
  16. { opzione=scegli_opzione();
  17. switch(opzione)
  18. { case 0: temp=0; break;
  19. case 1: leggi_stringa(stringa, &dim_str);
  20. ris=pal(stringa,dim_str);
  21. if(!ris)
  22. reverse(stringa,dim_str);
  23. stampa_risposta(stringa, ris); break;
  24. }
  25. }while(temp);
  26. return 0;
  27. }
  28.  
  29. int scegli_opzione(void)
  30. { int sc;
  31. printf("Se vuoi eseguire il programma inserire 1; altrimenti, per terminare, inserisci 0: ");
  32. scanf("%d",&sc);
  33. return sc;
  34. }
  35.  
  36. void leggi_stringa(char *vect,int* n)
  37. { printf("Inserire stringa: ");
  38. scanf("%s", vect);
  39. *n=strlen(vect);
  40. }
  41.  
  42. int pal(char *vect, int n)
  43. { int i,res, j=n-1;
  44. for(i=0; i<n/2; i++, j--)
  45. { if(*(vect+i)==*(vect+j))
  46. res=1;
  47. else
  48. res=0;
  49. }
  50. return res;
  51. }
  52.  
  53. void reverse(char *vect, int n)
  54. { int i, j=n-1;
  55. char temp;
  56. for(i=0; i<n/2; i++,j--)
  57. { temp=*(vect+i);
  58. *(vect+i)=*(vect+j);
  59. *(vect+j)=temp;
  60. }
  61. }
  62.  
  63. int stampa_risposta(char *vect, int ris)
  64. { if(ris==0)
  65. printf("STRINGA NON PALINDROMA. \nSTAMPA STRINGA INVERTITA.\n------------------------\n%s \n", vect);
  66. else
  67. printf("STRINGA %s PALINDROMA.\n", vect);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement