Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include "pch.h"
  2. #include <string>
  3. #include <iostream>
  4. struct key
  5. {
  6. const char *word;
  7. int count;
  8. } keytab[] =
  9. {
  10. "auto", 0,
  11. "break", 0,
  12. "void", 0,
  13. "volatile", 0,
  14. "while", 0
  15. };
  16. int getword(char *, int);
  17. int binsearch(char *, struct key *, int);
  18. using namespace std;
  19.  
  20. int main()
  21. {
  22. int n;
  23. int NKEYS = sizeof(keytab) / sizeof(key);
  24. char str[1000];
  25. char *tokens;
  26. const char *separ = " !?.,;/*-+\n\t";
  27. setlocale(LC_ALL, "rus");
  28. cout << "Введите что-нибудь\n";
  29. cin.getline(str, 1000);
  30. char* word = strtok_s(str, separ, &tokens); // выделяем слова
  31. while (word != NULL)
  32. {
  33. if ((n = binsearch(word, keytab, NKEYS)) >= 0) // сравниваем слова с ключевыми
  34. keytab[n].count++;
  35. word = strtok_s(NULL, separ, &tokens);
  36. }
  37. for (n = 0; n < NKEYS; n++)
  38. if (keytab[n].count > 0)
  39. cout << keytab[n].count << " " << keytab[n].word << "\n"; // выводим полученные результаты
  40. }
  41. int binsearch(char *word, struct key keytab[], int n)
  42. {
  43. int cond;
  44. int low, high, mid;
  45. low = 0;
  46. high = n - 1;
  47. while (low <= high)
  48. {
  49. mid = (low + high) / 2;
  50. if ((cond = strcmp(word, keytab[mid].word)) < 0)
  51. high = mid - 1;
  52. else if (cond > 0)
  53. low = mid + 1;
  54. else
  55. return mid;
  56. }
  57. return -1;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement