Advertisement
ebx

Palindrom v2

ebx
Sep 19th, 2011
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.94 KB | None | 0 0
  1. /*Napisati funkciju koja kao argument prima neki string (niz znakova) i provjerava da li je to palindrom. Palindrom je string koji se isto cita slijeva udesno i zdesna ulijevo. Prototip trazene funkcije je :
  2. int palindrom (char *) ;
  3. Funkcija nista ne ispisuje vec vraca rezultat provjere (kao sto se vidi iz prototipa). Razlike velikih i malih slova se ignorisu.*/
  4.  
  5. #include <stdio.h>
  6. #include <ctype.h>
  7.  
  8. int strlen(char*);
  9. void read(char*);
  10. void copydown(char*, char*);
  11. void remblank(char*, char*);
  12. void copyrev(char*, char*);
  13. int check(char*, char*);
  14.  
  15. int main(int argc, char **argv)
  16. {
  17.     char str1[255], str2[255], str3[255];
  18.    
  19.     read(str1);
  20.     copydown(str1, str2);
  21.     remblank(str2, str1);
  22.     copyrev(str1, str3);
  23.            
  24.     if (check(str1, str3))
  25.         printf("Palindrom!\n");
  26.     else
  27.         printf("Nije palindrom!\n");
  28.     return 0;
  29. }
  30. //funkcija vraca duzinu ucitanog stringa... postoji i gotova funkcija u string.h, ali... :)
  31. int strlen(char *str){
  32.     int len=0;
  33.     for (; str[len]!='\0'; len++);
  34.     return len;
  35.     }
  36. //ucitavanje stringa
  37. void read(char *str1){
  38.     fgets(str1, 255, stdin);
  39.     }
  40. //pretvaranje svih slova u mala (u zadatku je navedeno da se ignorisu razlike izmedju velikih i malih slova)   
  41. void copydown(char *str1, char *str2){
  42.     int i;
  43.     for (i=0; i<=strlen(str1); i++)
  44.         str2[i]=str1[i];
  45.     for (i=0; i<strlen(str2); i++)
  46.         if (isupper(str2[i]))
  47.             str2[i]=tolower(str2[i]);
  48.     }
  49. //brisanje svih razmaka i interpunkcijskih znakova
  50. void remblank(char *str2, char *str1){
  51.     int i, j;
  52.     for (i=0, j=0; i<strlen(str2); i++){
  53.         if (isspace(str2[i]) || ispunct(str2[i])) continue;
  54.         else
  55.             str1[j]=str2[i], j++;
  56.         }
  57.         str1[j]='\0';
  58.     }
  59. //kopiranje stringa unazad
  60. void copyrev(char *str1, char *str3){
  61.     int i, j;
  62.     for (i=0, j=strlen(str1)-1; j>=0; i++, j--)
  63.         str3[i]=str1[j];
  64.         str3[i]='\0';
  65.     }
  66. //provjera "palindromnosti"
  67. int check(char *str1, char *str3){
  68.     int i;
  69.     for (i=0; i<strlen(str1); i++)
  70.         if (str1[i]!=str3[i]) return 0;
  71.     return 1;
  72.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement