Практикум по программированию. Основы. Циклы. Корень уравнения
From AsIsWiki
(Difference between revisions)
Line 126: | Line 126: | ||
return 0; | return 0; | ||
} | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | ==Python== | ||
+ | |||
+ | <source lang="cpp"> | ||
+ | # Python 3 | ||
+ | |||
+ | import math | ||
+ | |||
+ | print('\n Поиск корня уравнения X^2 - 2 = 0') | ||
+ | print(' на отрезке [A, B] с точностью E') | ||
+ | print(' методом деления отрезка пополам') | ||
+ | print('-----------------------------------') | ||
+ | |||
+ | a = float(input(' Введите границу поиска A: ')) | ||
+ | b = float(input(' Введите границу поиска B: ')) | ||
+ | e = float(input(' Введите точность поиска E: ')) | ||
+ | |||
+ | print('-----------------------------------') | ||
+ | |||
+ | aSign = math.copysign(1, a * a - 2) | ||
+ | bSign = math.copysign(1, b * b - 2) | ||
+ | |||
+ | if aSign != bSign: | ||
+ | |||
+ | while True: | ||
+ | x = (a + b) / 2 | ||
+ | fa = a * a - 2 | ||
+ | fx = x * x - 2 | ||
+ | |||
+ | if (fa > 0 and fx < 0) or (fa < 0 and fx > 0): | ||
+ | b = x | ||
+ | else: | ||
+ | a = x | ||
+ | |||
+ | if abs(b - a) <= 2 * e: # моделируем do ... while | ||
+ | break | ||
+ | |||
+ | print(' X = %.12f' % x) | ||
+ | |||
+ | else: | ||
+ | |||
+ | s = "два корня" if aSign > 0 else "корней нет" | ||
+ | print('На отрезке [%.2f, %.2f] - %s' % (a, b, s)) | ||
</source> | </source> | ||
Latest revision as of 09:29, 23 November 2017
Contents[hide] |
[edit] Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.util.Scanner; public class Task10 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(); System.out.println( " Поиск корня уравнения X^2 - 2 = 0" ); System.out.println( " на отрезке [A, B] с точностью E" ); System.out.println( " методом деления отрезка пополам" ); System.out.println( "-----------------------------------" ); System.out.print( " Введите границу поиска A: " ); double a = in.nextDouble(); System.out.print( " Введите границу поиска B: " ); double b = in.nextDouble(); System.out.print( " Введите точность поиска E: " ); double e = in.nextDouble(); System.out.println( "-----------------------------------" ); double fa, fx, x; double aSign = Math.signum(a * a - 2 ); double bSign = Math.signum(b * b - 2 ); if (aSign != bSign) { do { x = (a + b) / 2 ; fa = a * a - 2 ; fx = x * x - 2 ; if ((fa > 0 && fx < 0 ) || (fa < 0 && fx > 0 )) { b = x; } else { a = x; } } while (Math.abs(b - a) > 2 * e); System.out.printf( " X = %.12f\n" , x); } else { String s = aSign > 0 ? "два корня" : "корней нет" ; System.out.printf( "На отрезке [%.2f, %.2f] - %s" , a, b, s); } } } |
[edit] C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | // g++ 4.2 #include <iostream> #define sign(a) (a < 0 ? -1 : a > 0) #define abs(a) (a > 0 ? a : -a) using namespace std; int main() { double a, b, e; cout << "\n Поиск корня уравнения X^2 - 2 = 0\n" ; cout << " на отрезке [A, B] с точностью E\n" ; cout << " методом деления отрезка пополам\n" ; cout << "-----------------------------------\n" ; cout << " Введите границу поиска A: " ; cin >> a; cout << " Введите границу поиска B: " ; cin >> b; cout << " Введите точность поиска E: " ; cin >> e; cout << "-----------------------------------\n" ; double fa, fx, x; double aSign = sign(a * a - 2); double bSign = sign(b * b - 2); if (aSign != bSign) { do { x = (a + b) / 2; fa = a * a - 2; fx = x * x - 2; if ((fa > 0 && fx < 0) || (fa < 0 && fx > 0)) { b = x; } else { a = x; } } while ( abs (b - a) > 2 * e); printf ( " X = %.12f" , x); } else { string s = aSign > 0 ? "два корня" : "корней нет" ; printf ( "На отрезке [%.2f, %.2f] - %s" , a, b, s.data()); } cout << "\n\n" ; return 0; } |
[edit] Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # Python 3 import math print( '\n Поиск корня уравнения X^2 - 2 = 0' ) print( ' на отрезке [A, B] с точностью E' ) print( ' методом деления отрезка пополам' ) print( '-----------------------------------' ) a = float (input( ' Введите границу поиска A: ' )) b = float (input( ' Введите границу поиска B: ' )) e = float (input( ' Введите точность поиска E: ' )) print( '-----------------------------------' ) aSign = math.copysign(1, a * a - 2) bSign = math.copysign(1, b * b - 2) if aSign != bSign: while True: x = (a + b) / 2 fa = a * a - 2 fx = x * x - 2 if (fa > 0 and fx < 0) or (fa < 0 and fx > 0): b = x else : a = x if abs (b - a) <= 2 * e: # моделируем do ... while break print( ' X = %.12f' % x) else : s = "два корня" if aSign > 0 else "корней нет" print( 'На отрезке [%.2f, %.2f] - %s' % (a, b, s)) |
[edit] Pascal
1 |
[edit] JavaScript
1 |