Практикум по программированию. Основы. Ветвление. Прямая и окружность
From AsIsWiki
(Difference between revisions)
Line 15: | 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); | |
− | + | } | |
− | + | ||
} | } | ||
} | } | ||
Line 98: | Line 96: | ||
cout << "----------------------------------------------\n"; | cout << "----------------------------------------------\n"; | ||
− | |||
− | |||
− | |||
printf(" Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f\n", k, b, r); | printf(" Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f\n", k, b, r); | ||
double x1, y1, x2, y2; | double x1, y1, x2, y2; | ||
+ | |||
+ | double d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r); | ||
if (d < 0) { | if (d < 0) { | ||
Line 109: | Line 106: | ||
cout << " не пересекается"; | cout << " не пересекается"; | ||
− | } else | + | } 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); | |
− | |||
} | } | ||
Revision as of 20:30, 14 March 2016
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; }
Pascal
JavaScript