Практикум по программированию. Основы. Ветвление. Прямая и окружность
From AsIsWiki
(Difference between revisions)
(Created page with "<div style='max-width:700px;text-align:justify;'> Ветвление __FORCETOC...") |
|||
(6 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
<div style='max-width:700px;text-align:justify;'> | <div style='max-width:700px;text-align:justify;'> | ||
− | [[Практикум по программированию. Основы. Ветвление|Ветвление]] | + | [[Практикум по программированию. Основы. Ветвление. Параллельность прямых|Назад]] · |
+ | [[Практикум по программированию. Основы. Ветвление|Задачи]] · | ||
+ | [[Практикум по программированию. Основы. Ветвление. Счастливый билет|Дальше]] | ||
__FORCETOC__ | __FORCETOC__ | ||
Line 6: | Line 8: | ||
==Java== | ==Java== | ||
− | < | + | <source lang="java"> |
import java.util.Scanner; | import java.util.Scanner; | ||
import java.lang.Math; | import java.lang.Math; | ||
Line 13: | Line 15: | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
− | + | ||
Scanner in = new Scanner(System.in); | Scanner in = new Scanner(System.in); | ||
− | + | ||
− | + | System.out.println(); | |
− | System.out.println(" Поиск точек пересечения прямой Y = K * X + B "); | + | System.out.println(" Поиск точек пересечения прямой Y = K * X + B"); |
− | System.out.println(" и окружности с центром в начале координат | + | System.out.println(" и окружности с центром в начале координат"); |
System.out.println("----------------------------------------------"); | System.out.println("----------------------------------------------"); | ||
− | System.out.print(" Введите коэффициент K: "); | + | System.out.print(" Введите коэффициент K: "); |
− | + | double k = in.nextDouble(); | |
− | System.out.print(" Введите коэффициент B: "); | + | System.out.print(" Введите коэффициент B: "); |
− | + | double b = in.nextDouble(); | |
− | System.out.print(" Радиус окружности R: "); | + | System.out.print(" Радиус окружности R: "); |
− | + | double r = in.nextDouble(); | |
System.out.println("----------------------------------------------"); | 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); | |
− | + | } | |
− | + | ||
} | } | ||
} | } | ||
− | </ | + | </source> |
==C++== | ==C++== | ||
− | < | + | <source lang="cpp"> |
− | </ | + | // 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; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | ==Python== | ||
+ | |||
+ | <source lang="cpp"> | ||
+ | # 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)) | ||
+ | </source> | ||
==Pascal== | ==Pascal== | ||
− | < | + | <source lang="delphi"> |
− | </ | + | </source> |
+ | |||
+ | |||
+ | ==JavaScript== | ||
+ | |||
+ | <source lang="js"> | ||
+ | <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> | ||
+ | </source> | ||
---- | ---- | ||
− | [[Практикум по программированию. Основы. Ветвление|Ветвление]] | + | [[Практикум по программированию. Основы. Ветвление. Параллельность прямых|Назад]] · |
+ | [[Практикум по программированию. Основы. Ветвление|Задачи]] · | ||
+ | [[Практикум по программированию. Основы. Ветвление. Счастливый билет|Дальше]] | ||
</div> | </div> |
Latest revision as of 08:29, 21 November 2017
Contents |
[edit] 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); } } }
[edit] 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; }
[edit] 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))
[edit] Pascal
[edit] 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>