Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "droby2.h"
- #include <string.h>
- using namespace std;
- void separate(string x, Droby2 &d1);
- int main()
- {
- string x, y, z;
- cout<<"Vvedite pervyu drob: ";
- getline(cin, x);
- cout<<"Vvedite vtoruyu drob: ";
- getline(cin, y);
- cout<<"Vvedite operator: ";
- getline(cin, z);
- Droby2 d1, d2;
- separate(x, d1);
- separate(y, d2);
- if (z == "+")
- d1.show(d1 + d2);
- else if (z == "-")
- d1.show(d1 - d2);
- else if (z == "*")
- d1.show(d1 * d2);
- else if (z == "/")
- d1.show(d1 / d2);
- }
- void separate(string x, Droby2 &d)
- { ///////////////////// для случаев 1 и -1 //ЧЁ ЭТО ЗА СЛУЧАИ ТАКИЕ? МОЛ ДЛЯ ЦЕЛЫХ ПОЛОЖИТЕЛЬНЫХ И ОТРИЦ?
- /*{Мы, походу, это в каком то припадке написали. На самом деле тут надо проверять, есть ли в строке запятая. Я тут сразу щас исправлю}*/
- if (x.find_first_of(",") == string::npos) // {Если первое вхождение запятой равно концу строки (то бишь нет запятой), значит, что это целое число}
- {
- int c = stoi(x);//изменили тип х в int //*ТУТ stoi ЭТО ТАКАЯ ВЕЩЬ, КОТОРАЯ ИЗ СТРИНГА ДЕЛАЕТ ЦЕЛОЕ ЧИСЛО? */
- // {stoi - string to int, строка в целое число}
- d.set_celai(c);// ЭЭЭЭЭЭЭ... КТО ТАКОЙ ЭТОТ d И КУДАН ОН ВСТАВЛЯЕТ НАШУ ДОРОГУЮ с?!??!!
- //{d мы передаем в качестве параметра, это объект класса Дробь. Тупо новая дробь. Так как дробной части нет, с - целая часть, поэтому мы его запихиваем в целую часть дроби}
- }
- /////////////////// для остальных случаев // Т.Е. ДЛЯ ВСЯКИХ ДРОБНЫХ? {Да}
- else
- {
- int position = 0; //ВЕРНУЛИСЬ В НАЧАЛО СТРОКИ? {Это тупо переменная для обозначения того, где находится символ, который мы ищем}
- while ((position = x.find(" ")) != string::npos) /*Т.Е. ИДЁМ ДО ПРОБЕЛА И ОСТАНАВЛИВАЕМСЯ? А string::npos -ЭТО КАК? КОНЕЦ СТРОКИ? {Позишн - позиция пробела, номер, под которым он находится в строке. Та фигня - да, конец строки}*/
- {///////////////// вз яли целую часть(если она есть), запомнили её и вырезали/////////////////////
- string celaya_chast = x.substr(0, position);/*ТУТ СОЗДАЛИ ПЕРЕМЕННУЮ ТИПА string ПО ИМЕНИ celaya_chast И ПРИСВОИЛИ ОТ СТРОКИ x ЗНАЧЕНИЕ С 0 ПО position, КОТОРАЯ = ПРОБЕЛЬЧИКУ? {Да, это целая часть, которая отделена от дробной пробелом}*/
- int c = stoi(celaya_chast);//изменили тип celaya_chast в int И ПРИСВОИЛИ ЭТО ДЕЛО ПЕРЕМЕННОЙ с? {Да}
- d.set_celai(c); // ДА ЭТОТ d - НАГЛЕЦ!!! КУДАН ОН ВНОВЬ ВСТАВЛЯЕТ НАШУ с?!??!! {Опять же просто присваиваем значение целой части}
- x.erase(0, position+1); /* А ТУТА МЫ УДАЛЯЕМ С НАЧАЛА СТОРКИ ДО ПРОБЕЛА ВКЛЮЧАЯ ЕГО ЖЕ? {Да}*/
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- }
- while ((position = x.find("/")) != string::npos) // ТУТ ГОУ ДО / ПОКА ТА В СВОЮ ОЧЕРЕДЬ НЕ РАВНА КОНЦУ СТРОКИ? {Мне кажется, что ты немножко не понимаешь смысл этого цикла. Если да, то маякни мне, я тебе объясню. Просто то, что ты написала, - это не оч правильно}
- {
- string chisl = x.substr(0, position); //* ТУТ ЗАПИХНУЛИ В ПЕРЕМЕННУ chisl ТИПА string ВСЁ ЧТО ЕСТЬ УЖЕ ОТ ПОДУКОРОЧЕНОЙ ИЗНАЧАЛЬНО ДАННОЙ СТРОКИ ДО ЗНАКА / ? {Да} */
- int c = stoi(chisl);//изменили тип chisl в int ТАК??? {Да}
- d.set_chislitel(c);
- if (c == 0)
- cout << "Poshel nafig"; //Т.Е ЕСЛИ ЧИСЛИТЕЛЬ РАВЕН 0, ТО МЫ ПОШЛЁМ НА ФИГ? {Да, мы это обозначили как условие того, что дробь записана неверно}
- else
- {
- x.erase(0, position+1);
- c = stoi(x);
- d.set_znametel(c);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement