Практикум по программированию. Основы. Циклы. Корень уравнения

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
 
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
 



Назад · Задачи · Дальше

Personal tools
Namespaces

Variants
Actions
Navigation
Tools