fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <locale>
  5.  
  6. using namespace std;
  7.  
  8. struct Substance// структура Жидкости
  9. {
  10. string name;
  11. double d;
  12. };
  13.  
  14. int main() {
  15. //setlocale(LC_ALL, "Russian");
  16. std::locale::global(std::locale());
  17.  
  18. Substance Substances [30] = {
  19. { "Voda", 1.00 }, // Жидкости
  20. { "Kerosin", 0.82 },
  21. { "Morskaya voda", 1.03 },
  22. { "Spirt", 0.80 },
  23. { "Rtut", 13.60 },
  24. { "Bensin", 0.74 },
  25. { "Maslo podsoln", 0.93 },
  26. { "Aceton", 0.79 },
  27. { "Efir", 0.71 },
  28. { "Neft", 0.80 },
  29. { "Azot", 0.00125 }, // Газы
  30. { "Kislorod", 0.001429 },
  31. { "Vodorod", 0.00009 },
  32. { "Uglekisly gas", 0.00198 },
  33. { "Metan", 0.000717 },
  34. { "Gely", 0.00018 },
  35. { "Prirodny gas", 0.0008 },
  36. { "Ugarny gas", 0.00125 },
  37. { "Xlor", 0.00321 },
  38. { "Aluminy", 2.7 }, // Твердые вещества
  39. { "Zoloto", 19.3 },
  40. { "Svinec", 11.3 },
  41. { "Serebro", 10.5 },
  42. { "Olovo", 7.3 },
  43. { "Stal", 7.8 },
  44. { "Led", 0.90 },
  45. { "Parafin", 0.90 },
  46. { "Dub", 0.70 },
  47. { "Sosna", 0.40 }
  48. };
  49.  
  50. {
  51. string str;
  52. getline (cin, str);
  53. auto sub = std::find_if(begin(Substances), end(Substances),
  54. [str](const Substance &s){ return s.name == str; }
  55. );
  56. if(sub == end(Substances)) {
  57. cout << str << " не найдено" << endl;
  58. }
  59. else {
  60. cout << "Плотность: " << sub->d << " г/см.куб" << endl;
  61. }
  62. }
  63.  
  64. {
  65. char i;
  66. int a, b;
  67. cin >> a >> i >> b;
  68.  
  69. if(i == '/') {
  70. if (b != 0) {
  71. float d = static_cast<float>(a)/static_cast<float>(b);
  72. cout << a << " / " << b << " = " << d << endl;
  73. auto sub = std::find_if(begin(Substances), end(Substances),
  74. [d](const Substance &s){ return s.d == d; }
  75. );
  76. if(sub == end(Substances)) {
  77. cout << d << " не найдено" << endl;
  78. }
  79. else {
  80. cout << "Найдено: " << sub->name << endl;
  81. }
  82. }
  83. }
  84. else {
  85. cout << "Знак в формуле не верен" << endl;
  86. }
  87. }
  88. return 0;
  89. }
Success #stdin #stdout 0s 3464KB
stdin
Voda
1 / 1
stdout
Плотность: 1 г/см.куб
1 / 1 = 1
Найдено: Voda