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

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
Line 18: Line 18:
  
 
         System.out.println();
 
         System.out.println();
         System.out.println(" Поиск корня уравнения X^2 - 2 = 0 ");
+
         System.out.println(" Поиск корня уравнения X^2 - 2 = 0");
         System.out.println("  на отрезке [A, B] с точностью E ");
+
         System.out.println("  на отрезке [A, B] с точностью E");
         System.out.println("  методом деления отрезка пополам ");
+
         System.out.println("  методом деления отрезка пополам");
 
         System.out.println("-----------------------------------");
 
         System.out.println("-----------------------------------");
  
Line 45: Line 45:
 
                 fx = x * x - 2;
 
                 fx = x * x - 2;
  
                 if (((fa > 0) && (fx < 0)) || ((fa < 0) && (fx > 0))) {
+
                 if ((fa > 0 && fx < 0) || (fa < 0 && fx > 0)) {
 
                     b = x;
 
                     b = x;
 
                 } else {
 
                 } else {
Line 57: Line 57:
 
         } else {
 
         } else {
  
             System.out.printf("На отрезке [%.2f, %.2f] - ", a, b);
+
            String s = aSign > 0 ? "два корня" : "корней нет";
 
+
             System.out.printf("На отрезке [%.2f, %.2f] - %s", a, b, s);
            if (aSign > 0) {
+
                System.out.println("два корня");
+
            } else {
+
                System.out.println("корней нет");
+
            }
+
 
+
 
         }
 
         }
 
     }
 
     }
Line 75: Line 69:
 
<source lang="cpp">
 
<source lang="cpp">
 
// g++ 4.2
 
// g++ 4.2
 
 
#include <iostream>
 
#include <iostream>
  
Line 84: Line 77:
  
 
int main() {
 
int main() {
 
+
   
 
     double a, b, e;
 
     double a, b, e;
 
      
 
      
Line 108: Line 101:
 
      
 
      
 
     if (aSign != bSign) {
 
     if (aSign != bSign) {
   
+
       
 
         do {
 
         do {
 
             x = (a + b) / 2;
 
             x = (a + b) / 2;
 
             fa = a * a - 2;
 
             fa = a * a - 2;
 
             fx = x * x - 2;
 
             fx = x * x - 2;
       
+
           
             if (((fa > 0) && (fx < 0)) || ((fa < 0) && (fx > 0))) {
+
             if ((fa > 0 && fx < 0) || (fa < 0 && fx > 0)) {
 
                 b = x;
 
                 b = x;
 
             } else {
 
             } else {
 
                 a = x;
 
                 a = x;
 
             }
 
             }
 +
           
 +
        } while (abs(b - a) > 2 * e);
 
          
 
          
        } while (abs(b - a) > 2 * e);
 
   
 
 
         printf(" X = %.12f", x);
 
         printf(" X = %.12f", x);
 
          
 
          
 
     } else {
 
     } else {
 
          
 
          
         printf("На отрезке [%.2f, %.2f] - ", a, b);
+
        string s = aSign > 0 ? "два корня" : "корней нет";
       
+
         printf("На отрезке [%.2f, %.2f] - %s", a, b, s.data());
        if (aSign > 0) {
+
            cout << "два корня";
+
        } else {
+
            cout << "корней нет";
+
        }
+
       
+
 
     }
 
     }
 
      
 
      

Revision as of 12:03, 22 March 2016

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


Contents

Java

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);
        }
    }
}


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


Pascal



JavaScript




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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools