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

From AsIsWiki
Revision as of 09:54, 19 March 2016 by Alex (Talk | contribs)

Jump to: navigation, search

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


Contents

Java

import java.util.Scanner;

public class Main {

    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 {

            System.out.printf("На отрезке [%.2f, %.2f] - ", a, b);

            if (aSign > 0) {
                System.out.println("два корня");
            } else {
                System.out.println("корней нет");
            }

        }
    }
}


C++

// 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 {
        
        printf("На отрезке [%.2f, %.2f] - ", a, b);
        
        if (aSign > 0) {
            cout << "два корня";
        } else {
            cout << "корней нет";
        }
        
    }
    
    cout << "\n\n";
    return 0;
}


Pascal



JavaScript




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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools