Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.16 KB | None | 0 0
  1. #include <iostream>
  2. #include "droby2.h"
  3. #include <string.h>
  4. using namespace std;
  5. void separate(string x, Droby2 &d1);
  6.  
  7. int main()
  8. {
  9.         string x, y, z;
  10.         cout<<"Vvedite pervyu drob: ";
  11.         getline(cin, x);
  12.         cout<<"Vvedite vtoruyu drob: ";
  13.         getline(cin, y);
  14.         cout<<"Vvedite operator: ";
  15.         getline(cin, z);
  16.         Droby2 d1, d2;
  17.         separate(x, d1);
  18.         separate(y, d2);
  19.         if (z == "+")
  20.             d1.show(d1 + d2);
  21.         else if (z == "-")
  22.             d1.show(d1 - d2);
  23.         else if (z == "*")
  24.             d1.show(d1 * d2);
  25.         else if (z == "/")
  26.             d1.show(d1 / d2);
  27.  
  28. }
  29. void separate(string x, Droby2 &d)
  30. {   ///////////////////// для случаев 1 и -1  //ЧЁ ЭТО ЗА СЛУЧАИ ТАКИЕ? МОЛ ДЛЯ ЦЕЛЫХ ПОЛОЖИТЕЛЬНЫХ И ОТРИЦ?
  31. /*{Мы, походу, это в каком то припадке написали. На самом деле тут надо проверять, есть ли в строке запятая. Я тут сразу щас исправлю}*/
  32.     if (x.find_first_of(",") == string::npos)  // {Если первое вхождение запятой равно концу строки (то бишь нет запятой), значит, что это целое число}
  33.     {
  34.         int c = stoi(x);//изменили тип х в int  //*ТУТ stoi ЭТО ТАКАЯ ВЕЩЬ, КОТОРАЯ ИЗ СТРИНГА ДЕЛАЕТ ЦЕЛОЕ ЧИСЛО? */
  35.         // {stoi - string to int, строка в целое число}
  36.         d.set_celai(c);// ЭЭЭЭЭЭЭ... КТО ТАКОЙ ЭТОТ   d    И КУДАН ОН ВСТАВЛЯЕТ НАШУ ДОРОГУЮ с?!??!!
  37.         //{d мы передаем в качестве параметра, это объект класса Дробь. Тупо новая дробь. Так как дробной части нет, с - целая часть, поэтому мы его запихиваем в целую часть дроби}
  38.     }
  39.     ///////////////////  для остальных случаев  // Т.Е. ДЛЯ ВСЯКИХ ДРОБНЫХ? {Да}
  40.     else
  41.     {
  42.         int position = 0; //ВЕРНУЛИСЬ В НАЧАЛО СТРОКИ? {Это тупо переменная для обозначения того, где находится символ, который мы ищем}
  43.         while ((position = x.find(" ")) != string::npos) /*Т.Е. ИДЁМ ДО ПРОБЕЛА И ОСТАНАВЛИВАЕМСЯ? А string::npos -ЭТО КАК? КОНЕЦ СТРОКИ? {Позишн - позиция пробела, номер, под которым он находится в строке. Та фигня - да, конец строки}*/
  44.         {///////////////// вз яли целую часть(если она есть), запомнили её и вырезали/////////////////////
  45.            string celaya_chast = x.substr(0, position);/*ТУТ СОЗДАЛИ ПЕРЕМЕННУЮ ТИПА string ПО ИМЕНИ celaya_chast И ПРИСВОИЛИ ОТ СТРОКИ x ЗНАЧЕНИЕ С 0 ПО position, КОТОРАЯ = ПРОБЕЛЬЧИКУ? {Да, это целая часть, которая отделена от дробной пробелом}*/
  46.            int c = stoi(celaya_chast);//изменили тип celaya_chast в int И ПРИСВОИЛИ ЭТО ДЕЛО ПЕРЕМЕННОЙ с? {Да}
  47.            d.set_celai(c); // ДА ЭТОТ  d - НАГЛЕЦ!!! КУДАН ОН ВНОВЬ ВСТАВЛЯЕТ НАШУ с?!??!! {Опять же просто присваиваем значение целой части}
  48.            x.erase(0, position+1); /* А ТУТА МЫ УДАЛЯЕМ С НАЧАЛА СТОРКИ ДО ПРОБЕЛА ВКЛЮЧАЯ ЕГО ЖЕ? {Да}*/
  49. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  50.         }
  51.         while ((position = x.find("/")) != string::npos) // ТУТ ГОУ ДО /  ПОКА ТА В СВОЮ ОЧЕРЕДЬ НЕ РАВНА КОНЦУ СТРОКИ? {Мне кажется, что ты немножко не понимаешь смысл этого цикла. Если да, то маякни мне, я тебе объясню. Просто то, что ты написала, - это не оч правильно}
  52.         {
  53.             string chisl = x.substr(0, position); //* ТУТ ЗАПИХНУЛИ В ПЕРЕМЕННУ chisl ТИПА string ВСЁ ЧТО ЕСТЬ УЖЕ ОТ ПОДУКОРОЧЕНОЙ ИЗНАЧАЛЬНО ДАННОЙ СТРОКИ ДО ЗНАКА  /  ? {Да} */
  54.             int c = stoi(chisl);//изменили тип chisl в int   ТАК??? {Да}
  55.             d.set_chislitel(c);
  56.             if (c == 0)
  57.                 cout << "Poshel nafig"; //Т.Е ЕСЛИ ЧИСЛИТЕЛЬ РАВЕН 0, ТО МЫ ПОШЛЁМ НА ФИГ? {Да, мы это обозначили как условие того, что дробь записана неверно}
  58.             else
  59.             {
  60.                 x.erase(0, position+1);
  61.                 c = stoi(x);
  62.                 d.set_znametel(c);
  63.             }
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement