Advertisement
Guest User

Untitled

a guest
Jun 26th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "string.h"
  3. #include "stdio.h"
  4.  
  5. int searchWord( const char str[81], const char word[21]);
  6. void testSearchWord();
  7.  
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10. testSearchWord();
  11. return 0;
  12. }
  13.  
  14. int searchWord( const char str[81], const char word[21])
  15. {
  16. int result = -1;
  17. char az[100] = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
  18.  
  19. if(// заданое слово входит в строку
  20. strstr(str, word) != NULL &&
  21.  
  22. // слева от первой буквы слова стоит разделитель
  23. // (получаем указатель на начало слово, смещаемся на ячейку влево,
  24. // получаем значене, проверяем есть ли оно в списке символов)
  25. ((strchr(az, *(strstr(str, word) - 1)) == NULL) ||
  26.  
  27. // или слово стоит в начале строки
  28. // начало слова это начало строки
  29. strstr(str, word) == str)&& // сменил на более короткую и понятную
  30.  
  31. // справа от последней буквы стоит разделитель
  32. // (получаем указатель на начало слово, смещаемся к символу стоящему после слова,
  33. // получаем значене, проверяем есть ли оно в списке символов)
  34. ((strchr(az, *(strstr(str, word) + strlen(word))) == NULL) ||
  35.  
  36. // или слово стоит в конце строки
  37. // получаем указатель на символ стоящий после слова,
  38. // нвходим количество символов между ним и началом строки
  39. // если символ был последним то количество символов будет равно длине строки
  40. ((strstr(str, word) + strlen(word)) - str == strlen(str))))
  41. {
  42. result = strstr(str, word) - str;
  43. }
  44. return result;
  45. }
  46.  
  47. void testSearchWord()
  48. {
  49. char testStr[6][5] = {
  50. {"cat"},
  51. {"_cat"},
  52. {"cat_"},
  53. {"c_at"},
  54. {"Ocat"},
  55. {"catO"}
  56. };
  57. char testWord[] = "cat";
  58. int expect[] = {0, 1, 0, -1, -1, -1};
  59. int problem = 0;
  60.  
  61. for(int i=0; i<6; i++)
  62. {
  63. if(searchWord(testStr[i], testWord) != expect[i])
  64. {
  65. printf(" v teste %d oshibka %s %d>> %d\n", i + 1, testStr[i], searchWord(testStr[i], testWord), expect[i]);
  66. problem++;
  67. }
  68. }
  69.  
  70. if(!problem)
  71. {
  72. printf("vse ok\n");
  73. }
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement