Guest User

Untitled

a guest
Jun 19th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. setlocale(LC_ALL, "Russian");
  8.  
  9. // В названиях легко запутаться, называйте переменные так чтобы логично и явно отразить суть ее предназначения
  10. // Неинициализированные элементы в массиве не обнуленные - они хранят себе мусор
  11. // ^Поэтому если указываете элементов больше чем используете - следите чтобы не захватить мусор
  12.  
  13. string operation[6] = { "==", "!=", "<", ">", ">=", "<=" };
  14. string description[6] = { "равно", "не равно", "строгое меньше", "строгое больше", "нестрогое больше", "нестрогое меньше" };
  15. string word;
  16. bool flag = false;
  17. int index = 0;
  18. int searchPoints[6] = {0, 0, 0, 0, 0, 0};
  19. int maxSearchPoints;
  20.  
  21. cout << "Введите слово\n";
  22. cin >> word;
  23.  
  24. // Этот цикл пройдет по всему массиву операций и сравнит строки
  25. // Если найдется такое - вернет flag=true и index этого элемента.
  26. for (int i = 0; i < 6; i++){
  27. if(word == operation[i]){
  28. flag = true;
  29. index = i;
  30. }
  31. }
  32.  
  33. // Если такой элемент нашелся - выводим его описание
  34. // Если нет - см else..
  35. if(flag) cout << description[index] << endl;
  36. else{
  37. cout << "Ой! Такого нет." << endl;
  38.  
  39. for (int i = 0; i < word.length(); i++){ // Цикл для прохода по символам слова
  40.  
  41. // Берем первый символ нашего слова и сравниваем его со всеми символами элементов массива операций
  42. // Если такой символ присутствует в элементе, добавляем ему +1 в массив
  43.  
  44. for (int j = 0; j < 6; j++){ // Цикл для прохода по элементам массива операций
  45. for (int k = 0; k < operation[j][k]; k++){ // Цикл для прохода по символам элемента массива операций
  46. if(word[i] == operation[j][k]) searchPoints[j]++;
  47. } // Конец цикла по символам
  48.  
  49. } // Конец цикла по элементам
  50.  
  51. } // Конец цикла по символам
  52.  
  53. // ОК.. 1:30 A.M. - самое время продолжить
  54. // Конструкция из трех циклов выше сделала нам массив searchPoints
  55. // В котором каждый элемент соответственно набрал какое-то количество "очков похожести"
  56. // Теперь нужно пройтись по этому массиву и выбрать, допустим тот у кого очков больше
  57.  
  58. // Простейшая задачка уровня лабы: найти больший элемент в массиве
  59. // Пусть maxSearchPoints = searchPoints[0]
  60.  
  61. maxSearchPoints = searchPoints[0];
  62. index = 0;
  63.  
  64. for (int i = 1; i < 6; i++){
  65. if(searchPoints[i] > maxSearchPoints){
  66. maxSearchPoints = searchPoints[i];
  67. index = i;
  68. }
  69. }
  70.  
  71. // Ну, собственно все:
  72. cout << "Возможно вы имели ввиду: " << operation[index] << endl;
  73.  
  74.  
  75. } // Конец else
  76.  
  77. }
Add Comment
Please, Sign In to add comment