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

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
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();
         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();
+
        double k = in.nextDouble();
  
         System.out.print(" Введите коэффициент B: ");  
+
         System.out.print(" Введите коэффициент B: ");
double b = in.nextDouble();
+
        double b = in.nextDouble();
  
         System.out.print(" Радиус окружности R: ");  
+
         System.out.print(" Радиус окружности R: ");
double r = in.nextDouble();
+
        double r = in.nextDouble();
  
 
         System.out.println("----------------------------------------------");
 
         System.out.println("----------------------------------------------");
          
+
         System.out.printf(
double d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r);
+
              " Прямая Y = %.2f * X + %.2f с окружностью радиусом R = %.2f\n", k, b, r);
  
System.out.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) {
  
    System.out.println(" не пересекается");
+
            System.out.println(" не пересекается");
  
} else {
+
        } else if (d == 0) {
    if (d == 0) {
+
  
x1 = -2 * k * b / (2 * k * k + 2);
+
            x1 = -2 * k * b / (2 * k * k + 2);
y1 = k * x1 + b;
+
            y1 = k * x1 + b;
  
System.out.printf(" пересекается в точке X = %.2f, Y = %.2f\n", x1, y1);
+
            System.out.printf(" пересекается в точке: X = %.2f; Y = %.2f\n", x1, y1);
  
    } else {
+
        } else {
  
x1 = (-2 * k * b - Math.sqrt(d)) / (2 * k * k + 2);
+
            x1 = (-2 * k * b - Math.sqrt(d)) / (2 * k * k + 2);
y1 = k * x1 + b;
+
            y1 = k * x1 + b;
x2 = (-2 * k * b + Math.sqrt(d)) / (2 * k * k + 2);
+
            x2 = (-2 * k * b + Math.sqrt(d)) / (2 * k * k + 2);
y2 = k * x2 + b;
+
            y2 = k * x2 + b;
  
System.out.println(" пересекается в точках:");
+
            System.out.println(" пересекается в точках:");
System.out.printf(" X1 = %.2f, Y1 = %.2f\n", x1, y1);
+
            System.out.printf(" X1 = %.2f; Y1 = %.2f\n", x1, y1);
System.out.printf(" X2 = %.2f, Y2 = %.2f\n", x2, y2);
+
            System.out.printf(" X2 = %.2f; Y2 = %.2f\n", x2, y2);
  
    }
+
        }
}
+
 
     }
 
     }
 
}
 
}
Line 98: Line 96:
 
      
 
      
 
     cout << "----------------------------------------------\n";
 
     cout << "----------------------------------------------\n";
   
 
    double d = 4 * k * k * b * b - 4 * (k * k + 1) * (b * b - r * r);
 
   
 
 
     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) {
        if (d == 0) {
+
 
              
 
              
            x1 = -2 * k * b / (2 * k * k + 2);
+
        x1 = -2 * k * b / (2 * k * k + 2);
            y1 = k * x1 + b;
+
        y1 = k * x1 + b;
 
              
 
              
            printf(" пересекается в точке X = %.2f, Y = %.2f", x1, y1);
+
        printf(" пересекается в точке: X = %.2f; Y = %.2f", x1, y1);
 
              
 
              
        } else {
+
    } else {
 
              
 
              
            x1 = (-2 * k * b - sqrt(d)) / (2 * k * k + 2);
+
        x1 = (-2 * k * b - sqrt(d)) / (2 * k * k + 2);
            y1 = k * x1 + b;
+
        y1 = k * x1 + b;
            x2 = (-2 * k * b + sqrt(d)) / (2 * k * k + 2);
+
        x2 = (-2 * k * b + sqrt(d)) / (2 * k * k + 2);
            y2 = k * x2 + b;
+
        y2 = k * x2 + b;
 
              
 
              
            cout << " пересекается в точках:\n";
+
        cout << " пересекается в точках:\n";
            printf(" X1 = %.2f, Y1 = %.2f\n", x1, y1);
+
        printf(" X1 = %.2f; Y1 = %.2f\n", x1, y1);
            printf(" X2 = %.2f, Y2 = %.2f", x2, y2);
+
        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




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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools