рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдг? рд╣рд╛рдБ, рдмрд╕ рдереВрдХ!

рдРрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ 10% рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реА рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ ред рд╣рдо рдЗрд╕ рд░рд╛рдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрддрд╛рддреЗ рд╣реИрдВ: рдкреВрд░реНрдгрд╛рдВрдХ рдЧреБрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдлрд╛рд░реНрдо рдХреБрд▓реНрд╣рд╛рдбрд╝реА 2 + bx + c = 0 рдХреЗ рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдг рдХрд╛ рд╣рд▓ред Int рдХреЗ рднреАрддрд░ рддреАрди рдкреВрд░реНрдгрд╛рдВрдХ (рдЧреБрдгрд╛рдВрдХ a, b рдФрд░ c) рдЗрдирдкреБрдЯ рд╣реИрдВред рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдПрдХ рддреНрд░рд╛рд╕рдж рдорд╛рдорд▓рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: рдкрд╛рдБрдЪ рдорд┐рдирдЯ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛! рдФрд░ рдЕрдм рдЙрди рдкрд╛рдВрдЪ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ:
рдХреЛрдб
int a, b, c; std::cin >> a >> b >> c; long long discriminant = b*b - 4*a*c; if (discriminant > 0) std::cout << "D > 0; 2 :\n" << "x1 = " << (-b + sqrt(discriminant))/(2*a) << "\n" << "x2 = " << (-b - sqrt(discriminant))/(2*a) << std::endl; else if (discriminant == 0) std::cout << "D = 0; 1 :\n" << "x = " << -1.*b/(2*a) << std::endl; else if (discriminant < 0) std::cout << "D < 0;  ." << std::endl; 
рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╢рд╛рдВрдд рд╣реИ? рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреИрд╕реЗред рдкрд╛рдВрдЪрд╡реЗрдВ рдЧреНрд░рд╛рд╣рдХ, рдкреЗрдЯреАрдпрд╛, "рдЧреНрд░рд╛рд╣рдХ" рдЦреБрд╢ рдирд╣реАрдВ рд╣реИ: рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдЗрд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ "рдирд╛рди" рдФрд░ "inf" рдЬрд╛рд░реА рдХрд┐рдПред
 0 -1 -1 D > 0; 2 : x1 = inf x2 = nan 

рд╢реНрд░рдЧ, рдкрддрд┐рдд рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рдЬреЛрдбрд╝реЗрдВ:
рдХреЛрдб
 if (a == 0) { if (b != 0) std::cout << "a = 0;    :\n" << "x = " << -1.*c/b << std::endl; else if (c == 0) std::cout << "   ; x -  ." << std::endl; else std::cout << " ." << std::endl; } else { //  ,   . } 
рдХреНрдпрд╛ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдирд╣реАрдВред
 1 0 -2 D > 0; 2 : x1 = 1.41421 x2 = -1.41421 49 7 -2 D > 0; 2 : x1 = 0.142857 x2 = -0.285714 
рдРрд╕реЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП, рдкреЗрдЯреНрдпрд╛ рдХреЛ рд╕реНрдХреВрд▓ рдореЗрдВ рдбрд╛рдВрдЯрд╛ рдЧрдпрд╛ рдерд╛: рдЬрдбрд╝ рдХреЛ рдореВрд▓, рдЕрдВрд╢ - рдЕрдВрд╢ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рд╕рд┐рд░ рдХреЗ рдкреАрдЫреЗ рдЦрд░реЛрдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЖрд╣ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рд▓реЗрддреЗ рд╣реИрдВ; рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдЪрдирд╛, рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп, рдпрд╣ рд╣рд░ рджрд╕ рдмрд╛рд░ рд╕реВрдЬ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдХрд╛рдлреА рд╡рдЬрди рдмрдврд╝рд╛рдпрд╛ рд╣реИред
рдХреЛрдб
рдЗрд╕ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдбред
 if (a == 0) { if (b != 0) std::cout << "a = 0;    :\n" << "x = " << fraction(-c,b).toString() << std::endl; else if (c == 0) std::cout << "   ; x -  ." << std::endl; else std::cout << " ." << std::endl; } else { long long discriminant = b*b - 4*a*c; if (discriminant > 0) { std::cout << "D > 0; 2 :\n"; radical dRoot (discriminant); if (dRoot.isInteger()) { std::cout << "x1 = " << fraction(-b + sqrt(discriminant), 2*a).toString() << "\n" << "x2 = " << fraction(-b - sqrt(discriminant), 2*a).toString() << std::endl; } else { std::string rational = fraction(-b, 2*a).toString(), irrational = fraction(radical(discriminant), 2*a).toString(); if (rational == "0") std::cout << "x1 = " << irrational << "\n" << "x2 = " << "- " << irrational << std::endl; else std::cout << "x1 = " << rational << " + " << irrational << "\n" << "x2 = " << rational << " - " << irrational << std::endl; } } else if (discriminant == 0) std::cout << "D = 0; 1 :\n" << "x = " << fraction(-b, 2*a).toString() << std::endl; else if (discriminant < 0) std::cout << "D < 0;  ." << std::endl; } 
 1 0 -2 D > 0; 2 : x1 = тФР/2 x2 = - тФР/2 49 7 -2 D > 0; 2 : x1 = 1/7 x2 = -2/7 
рдкреЗрдЯреНрдпрд╛ рд╕рдВрддреБрд╖реНрдЯ рд╣реИ, рдкреЗрдЯреНрдпрд╛ рдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЧрдгрд┐рдд рдореЗрдВ рдкрд╛рдВрдЪ рдФрд░ рд╕реНрдХреВрд▓ рд╕реЗ рдПрдХ рдЪреЙрдХрд▓реЗрдЯ рдмрд╛рд░ рд▓рд╛рдпрд╛ред
рдкрд╛рдБрдЪ рд╕рд╛рд▓ рд╣реЛ рдЧрдПред рдкреАрдЯрд░ рджрд╕рд╡реАрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред рд╡рд╣рд╛рдВ, рдмреАрдЬрдЧрдгрд┐рдд рдореЗрдВ рдПрдХ рдкрд╛рда рдореЗрдВ, рдЙрд╕реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдФрд░ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдбрд┐рд╕реНрдХ рдкрд░ рдХрд╣реАрдВ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЦреЛрджрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдЦрд▓рдирд╛рдпрдХ! - рдЕрдкрдирд╛ рд╣реЛрдорд╡рд░реНрдХ рдХрд░реЛред рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрдпрд╛ рд╣реИ?
 1 0 25 D < 0;  . 
рдирд┐рд░рдВрдХреБрд╢ рдкреАрдЯрд░ рд╣рдореЗрдВ рдПрдХ рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд╛рддрд╛ рд╣реИред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рд░рд╣реА рд╣реИ ... рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ (рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЦреБрдж рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА)ред
рдХреЛрдб
 if (discriminant != 0) { std::cout << "D != 0; 2 :\n"; radical dRoot (discriminant); if (dRoot.isInteger()) { std::cout << "x1 = " << fraction(-b + sqrt(discriminant), 2*a).toString() << "\n" << "x2 = " << fraction(-b - sqrt(discriminant), 2*a).toString() << std::endl; } else { std::string rational = fraction(-b, 2*a).toString(), irrational = fraction(radical(discriminant), 2*a).toString(); if (rational == "0") std::cout << "x1 = " << irrational << "\n" << "x2 = " << "- " << irrational << std::endl; else std::cout << "x1 = " << rational << " + " << irrational << "\n" << "x2 = " << rational << " - " << irrational << std::endl; } } else if (discriminant == 0) std::cout << "D = 0; 1 :\n" << "x = " << fraction(-b, 2*a).toString() << std::endl; 

 1 0 25 D != 0; 2 : x1 = i*5 x2 = - i*5 1 2 53 D != 0; 2 : x1 = -1 + i*2тФР/13 x2 = -1 - i*2тФР/13 

рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдореЗрдВ рдкрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рд╣рд╛рдИ рд╕реНрдХреВрд▓ рд╕реЗ рдкреЗрдЯреНрдпрд╛ рд╕реНрдирд╛рддрдХ, рдПрдХ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕рддреНрд░ рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред
рдЕрдВрддред
рдЕрдВрддрд┐рдо рдХреЛрдбред


Source: https://habr.com/ru/post/In175533/


All Articles