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

From AsIsWiki
Jump to: navigation, search

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


Contents

Java

import java.util.Scanner;
import java.lang.Math;

public class Task14 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println();
        System.out.println(" Поиск точек пересечения прямой Y = K * X + B");
        System.out.println("  и окружности с центром в начале координат");
        System.out.println("----------------------------------------------");

        System.out.print(" Введите коэффициент K: ");
        double k = in.nextDouble();

        System.out.print(" Введите коэффициент B: ");
        double b = in.nextDouble();

        System.out.print(" Радиус окружности R: ");
        double r = in.nextDouble();

        System.out.println("----------------------------------------------");
        System.out.printf(
               " Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f\n", k, b, r);

        double x1, y1, x2, y2;

        double d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r);

        if (d < 0) {

            System.out.println(" не пересекается");

        } else if (d == 0) {

            x1 = -2 * k * b / (2 * k * k + 2);
            y1 = k * x1 + b;

            System.out.printf(" пересекается в точке: X = %.2f; Y = %.2f\n", x1, y1);

        } else {

            x1 = (-2 * k * b - Math.sqrt(d)) / (2 * k * k + 2);
            y1 = k * x1 + b;
            x2 = (-2 * k * b + Math.sqrt(d)) / (2 * k * k + 2);
            y2 = k * x2 + b;

            System.out.println(" пересекается в точках:");
            System.out.printf(" X1 = %.2f; Y1 = %.2f\n", x1, y1);
            System.out.printf(" X2 = %.2f; Y2 = %.2f\n", x2, y2);

        }
    }
}


C++

// g++ 4.2

#include <iostream>
#include <math.h>

using namespace std;

int main() {
    
    double k, b, r;
    
    cout << "\n Поиск точек пересечения прямой Y = K * X + B\n";
    cout << "  и окружности с центром в начале координат\n";
    cout << "----------------------------------------------\n";
    
    cout << " Введите коэффициент K: ";
    cin >> k;
    
    cout << " Введите коэффициент B: ";
    cin >> b;
    
    cout << " Радиус окружности R: ";
    cin >> r;
    
    cout << "----------------------------------------------\n";
    printf(" Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f\n", k, b, r);
    
    double x1, y1, x2, y2;
    
    double d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r);
    
    if (d < 0) {
        
        cout << " не пересекается";
        
    } else if (d == 0) {
            
        x1 = -2 * k * b / (2 * k * k + 2);
        y1 = k * x1 + b;
            
        printf(" пересекается в точке: X = %.2f; Y = %.2f", x1, y1);
            
    } else {
            
        x1 = (-2 * k * b - sqrt(d)) / (2 * k * k + 2);
        y1 = k * x1 + b;
        x2 = (-2 * k * b + sqrt(d)) / (2 * k * k + 2);
        y2 = k * x2 + b;
            
        cout << " пересекается в точках:\n";
        printf(" X1 = %.2f; Y1 = %.2f\n", x1, y1);
        printf(" X2 = %.2f; Y2 = %.2f", x2, y2);
            
    }
    
    cout << "\n\n";
    return 0;
}


Python

# Python 3

import math

print('\n Поиск точек пересечения прямой Y = K * X + B')
print('  и окружности с центром в начале координат')
print('----------------------------------------------')

k = float(input(' Введите коэффициент K: '))
b = float(input(' Введите коэффициент B: '))
r = float(input(' Радиус окружности R: '))

print('----------------------------------------------')
print(' Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f' % (k, b, r))

d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r)

if d < 0:

    print(' не пересекается')

elif d == 0:

    x1 = -2 * k * b / (2 * k * k + 2)
    y1 = k * x1 + b

    print(' пересекается в точке: X = %.2f; Y = %.2f' % (x1, y1))

else:

    x1 = (-2 * k * b - math.sqrt(d)) / (2 * k * k + 2)
    y1 = k * x1 + b
    x2 = (-2 * k * b + math.sqrt(d)) / (2 * k * k + 2)
    y2 = k * x2 + b

    print(' пересекается в точках:')
    print(' X1 = %.2f; Y1 = %.2f' % (x1, y1))
    print(' X2 = %.2f; Y2 = %.2f' % (x2, y2))


Pascal



JavaScript

<html lang="ru">
<head>
    <meta charset="UTF-8">
    <script>
        function calc() {
            var k = Number(document.getElementById("kId").value);
            var b = Number(document.getElementById("bId").value);
            var r = Number(document.getElementById("rId").value);

            var x1, y1, x2, y2;
            var d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r);
            var result = "Прямая Y = " + k.toFixed(2) + " * X + " + b.toFixed(2) +
                    " с окружностью радиусом R = " + r.toFixed(2) + "<br>";

            if (d < 0) {

                result += " не пересекается";

            } else if (d == 0) {

                x1 = -2 * k * b / (2 * k * k + 2);
                y1 = k * x1 + b;

                result += " пересекается в точке: X = " +
                        x1.toFixed(2) + "; Y = " + y1.toFixed(2);

            } else {

                x1 = (-2 * k * b - Math.sqrt(d)) / (2 * k * k + 2);
                y1 = k * x1 + b;
                x2 = (-2 * k * b + Math.sqrt(d)) / (2 * k * k + 2);
                y2 = k * x2 + b;

                result += " пересекается в точках:<br>" +
                        " X1 = " + x1.toFixed(2) + "; Y1 = " + y1.toFixed(2) + "<br>" +
                        " X2 = " + x2.toFixed(2) + "; Y2 = " + y2.toFixed(2) + "<br>";
            }

            document.getElementById("resultId").innerHTML = result;
        }
    </script>
</head>
<body>

<p>Поиск точек пересечения прямой Y = K * X + B<br>
и окружности с центром в начале координат</p>
<hr>
<p>Введите коэффициент K: <input id="kId" size="5"></p>
<p>Введите коэффициент B: <input id="bId" size="5"></p>
<p>Радиус окружности R: <input id="rId" size="5"></p>
<hr>
<p id="resultId"></p>

<button onclick="calc()">Рассчитать</button>

</body>
</html>



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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools