Advertisement
RobertDeMilo

WB.11 Тестирование и отладка решения задачи "Минимальная строка"

Sep 3rd, 2023 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.42 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. //1 alpha beta gamma   три разные строчки (первое слово минимальное)
  6. //2 beta alpha gamma   три разные строчки (второе слово минимальное)
  7. //3 beta gamma alpha   три разные строчки (третье слово минимальное)
  8.  
  9. //1 alpha beta alpha
  10. //2 beta alpha alpha
  11. //3 alpha alpha beta
  12.  
  13. //1 gamma gamma gamma  все три строчки одинаковые
  14.  
  15. int main()
  16. {
  17.     string a, b, c;
  18.     cin >> a >> b >> c;
  19.  
  20.     // не строгие стравнения
  21.     //(если несколько строк являются минимальными достаточно вывести одну)
  22.    
  23.     if (a <= b && a <= c)  // Первая строка минимальная?
  24.     {
  25.         cout << a;
  26.     }
  27.     else if (b <= a && b <= c) // Вторая строка минимальная?
  28.     {
  29.         cout << b;
  30.     }
  31.     else
  32.     {
  33.         cout << c;
  34.     }
  35.  
  36.     return 0;
  37. }
  38. *******************************************************************************************************************
  39. Выполним декомпозицию программы: выделим функцию нахождения минимальной строки:
  40. Код нахождения минимальной строки выделен в функцию с понятным именем.
  41.  
  42. #include <iostream>
  43. #include <string>
  44.  
  45. using namespace std;
  46.  
  47. const string& FindMinStr(const string& a, const string& b, const string& c) {
  48.     if (a <= b && a <= c) {
  49.         return a;
  50.     } else if (b <= a && b <= c) {
  51.         return b;
  52.     }
  53.     return c;
  54. }
  55.  
  56. int main() {
  57.     string a, b, c;
  58.  
  59.     cin >> a >> b >> c;
  60.  
  61.     cout << FindMinStr(a, b, c) << endl;
  62. }
  63. *******************************************************************************************************************
  64. Теперь напишем для функции модульный тест.
  65. Он должен вызывать функцию FindMinStr с некоторыми параметрами и сравнивать её результат с ожидаемым значением.
  66. Для проверок воспользуемся макросом assert.
  67.    
  68. #include <cassert>
  69. #include <iostream>
  70. #include <string>
  71.  
  72. using namespace std;
  73.  
  74. const string& FindMinStr(const string& a, const string& b, const string& c) {
  75.     if (a <= b && a <= c) {
  76.         return a;
  77.     } else if (b <= a && b <= c) {
  78.         return b;
  79.     }
  80.     return c;
  81. }
  82.  
  83. void TestFindMinStr() {
  84.     assert(FindMinStr("alpha"s, "beta"s, "gamma"s) == "alpha"s);
  85.     assert(FindMinStr("beta"s, "alpha"s, "gamma"s) == "alpha"s);
  86.     assert(FindMinStr("gamma"s, "beta"s, "alpha"s) == "alpha"s);
  87.  
  88.     assert(FindMinStr("alpha"s, "beta"s, "alpha"s) == "alpha"s);
  89.     assert(FindMinStr("beta"s, "alpha"s, "alpha"s) == "alpha"s);
  90.     assert(FindMinStr("alpha"s, "alpha"s, "beta"s) == "alpha"s);
  91.  
  92.     assert(FindMinStr("alpha"s, "alpha"s, "alpha"s) == "alpha"s);
  93.  
  94.     assert(FindMinStr(""s, "alpha"s, "beta"s) == ""s);
  95.     assert(FindMinStr("beta"s, ""s, "alpha"s) == ""s);
  96.     assert(FindMinStr("beta"s, "alpha"s, ""s) == ""s);
  97.  
  98.     cout << "TestFindMinStr is OK"s << endl;
  99. }
  100.  
  101. int main() {
  102.     TestFindMinStr();
  103.  
  104.     string a, b, c;
  105.  
  106.     cin >> a >> b >> c;
  107.  
  108.     cout << FindMinStr(a, b, c) << endl;
  109. }    
  110.    
Tags: tests
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement