Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 01.12.2013
Сообщений: 5

Вызов метода в цикле, для разных переменных

21.06.2014, 19:32. Показов 2968. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Мне необходимо помощь, в реализации одного из методов моей практической работы.
Задача следующая: "Определить функцию, позволяющую построить уравнение прямой по двум точкам. Определить, найдутся ли такие шесть различных точек из 20 заданных, что три прямые, проведенные через эти точки пересекутся в одной точке."
Часть задания сделана: написал метод, который принимает в качестве параметров 12 значений (координат), по ним он строит уравнение прямой и проверяет, есть ли у трех прямых общая точка пересечению.
В задании сказано, что необходимо определить есть ли из 20 точек, шесть таких точек, что прямые, построенные по ним, имеют точку пересечению.
Проблема возникла не одна, но напишу главную: как циклом вызвать метод, для разных точек, при этом чтобы передать все точки (желательно не повторяя их).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2014, 19:32
Ответы с готовыми решениями:

Вызов метода для каждого элемента массива
Разбирал чужой код, наткнулся на следующую запись (обобщённо): public void method1() { SomeClass array = OtherClass.getArrray(); ...

Вызов одинакового метода для разных объектов из массива
Напишите три класса: Secretary, Director и Programmer. Каждый из них должен содержать метод CalculateSalary. Для простоты пусть каждый из...

Вызов метода в цикле While
Всем привет! Есть два метода: один шифрует пароль (получает строку - выводит зашифрованую строку) и есть метод разшифровки (получает...

5
16 / 16 / 10
Регистрация: 17.03.2014
Сообщений: 59
21.06.2014, 21:39
Занеси точки в массив в 2 ряда в первый х во второй у.
0
1 / 1 / 0
Регистрация: 01.12.2013
Сообщений: 5
21.06.2014, 22:10  [ТС]
Цитата Сообщение от M_Kenan Посмотреть сообщение
Занеси точки в массив в 2 ряда в первый х во второй у.
Можно чуть подробнее?
0
 Аватар для newyork7776
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
22.06.2014, 00:56
вот тебе начало класса
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class TPoint {
        private int[][] mas = new int[20][2];
        public int count = 20;
               
        
        public void InPutData() throws IOException
        {
           BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
           System.out.println("===Point===");
           for(int i=0;i<count;i++)
           {
               System.out.print("Point ["+(i+1)+"].x = ");
                mas[i][0]=Integer.parseInt(buff.readLine());
               System.out.print("Point ["+(i+1)+"].y = ");
                mas[i][1]=Integer.parseInt(buff.readLine());              
           }
        }
}
1
16 / 16 / 10
Регистрация: 17.03.2014
Сообщений: 59
22.06.2014, 10:19
Цитата Сообщение от Leshkaworkout Посмотреть сообщение
Можно чуть подробнее?
Есть точки а (1, 2), в(3, 4), с(5, 6)... Их можно занести в массив:

1 3 5...
2 4 6...

А если б мы увидели код помощь была бы качественнее
0
1 / 1 / 0
Регистрация: 01.12.2013
Сообщений: 5
22.06.2014, 13:48  [ТС]
Цитата Сообщение от newyork7776 Посмотреть сообщение
вот тебе начало класса
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class TPoint {
        private int[][] mas = new int[20][2];
        public int count = 20;
               
        
        public void InPutData() throws IOException
        {
           BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
           System.out.println("===Point===");
           for(int i=0;i<count;i++)
           {
               System.out.print("Point ["+(i+1)+"].x = ");
                mas[i][0]=Integer.parseInt(buff.readLine());
               System.out.print("Point ["+(i+1)+"].y = ");
                mas[i][1]=Integer.parseInt(buff.readLine());              
           }
        }
}
О, спасибо большое за идею, долго не мог додуматься)
Теперь есть массив, есть метод для обработки. Как циклом передавать это, чтоб найти нужные три прямые?
Вот так выглядит весь код.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.io.*;
import java.math.*;
 
class second_2 {
    public static int count = 20;
    private static int[][] mas = new int[count][2];
    static int ct =0;
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        for(int i=0;i<count;i++)
        {
            System.out.print("Point ["+(i+1)+"].x = ");
            mas[i][0] = Integer.parseInt(br.readLine());
            System.out.print("Point ["+(i+1)+"].y = ");
            mas[i][1] = Integer.parseInt(br.readLine()); 
        }
        method(mas);
    }
 
    public static void method(int mas[][]){
        int x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6;
        x1 = x2 = x3 = x4 = x5 = x6 = y1 = y2 = y3 = y4 = y5 = y6 = 0;
        for(int i=0; i<20; i++){
            for(int j=0; j<20; j++){
                if(i==j){}
                if(i!=j){
                    x1 = mas[i][0];
                    y1 = mas[i][1];
                    x2 = mas[j][0];
                    y2 = mas[j][1];
                    method2(x1, x2, y1, y2);
                    ct++;
                }
            }
        }
 
    }
 
    public static void method2(int x1, int x2, int y1, int y2) {
        int a1 = y1 - y2;
        int b1 = x2 - x1;
        int c1 = -(a1 * x1 + b1 * y1);
        System.out.println(ct+". "+a1+"x + "+b1+"y + "+c1+" = 0");
 
        //         int a2 = y3 - y4;
        //         int b2 = x4 - x3;
        //         int c2 = -(a2 * x3 + b2 * y3);
        //         System.out.println(a2+"x + "+b2+"y + "+c2+" = 0");
        // 
        //         int a3 = y5 - y6;
        //         int b3 = x6 - x5;
        //         int c3 = -(a3 * x5 + b3 * y5);
        //         System.out.println(a3+"x + "+b3+"y + "+c3+" = 0");
        // 
        //         if (a1 * b2 - b1 * b2 == 0) {System.out.println("Прямые параллельны.");} 
        //         if ((c1 * b2 - c2 * b1) == 0 |  (a1 * b2 - a2 * b1) == 0) {System.out.println("Прямые не пересекаются.");}
        //         else{
        //             int x = -(c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1);
        //             int y = -(a1 * c2 - a2 * c1) / (a1 * b2 - a2 * b1);
        //             if((a3*x + b3*y + c3) == 0){System.out.println("Координаты точки пересечения: (" + x + ";" + y + ")");}
        //             else{System.out.println("Прямые не пересекаются.");}}
    }
}



При запуске, я получаю 380 прямых, построенных по 20 точкам (размещение без повторения). Все верно. Теперь нужно проверить есть ли из этих 380 прямых , три прямые, которые будут иметь точку пересечения. Метод, который проверяет имеют ли три точки пересечение есть (он закомментирован). Осталось передать все эти 380 прямых в метод, при этом их нужно чередовать между собой. То есть, сначала передаем 1-ую, 2-ую и 3-ю прямые; затем, передаем 1-ую, 2-ую и 4-ую, и т.д.
При этом, нужно исключить повторения. То есть, если уже было 1-ая, 2-ая и 3-я, то 1-ая, 3-я и 2-ая передаваться не должны. Также не должны передаваться одни и те же прямые (1ая, 1ая и 2-ая). Последнее сделать просто, добавив условие.

Добавлено через 3 минуты
Цитата Сообщение от M_Kenan Посмотреть сообщение
Есть точки а (1, 2), в(3, 4), с(5, 6)... Их можно занести в массив:

1 3 5...
2 4 6...

А если б мы увидели код помощь была бы качественнее
Спасибо, с вводом разобрался. Главная проблема осталась, нужно циклом передавать параметры в метод.

Добавлено через 2 часа 17 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2014, 13:48
Помогаю со студенческими работами здесь

Вызов нумерованных переменных в цикле
У меня есть integer переменные r0, r1, r2, r3, r4, r5. Мне нужно присвоить их значения в цикле //Пример цикла for (var i = 0; i...

Вызов метода по результатам сравнения переменных А и В
Всем привет. Подскажите пожалуйста. У меня есть две переменные A и B. Как правильно сделать, чтобы выяснить какая и на сколько больше и в...

Вызов одного метода у разных типов
Как запустить метод AnyMethod, если pl может принимать несколько типов, но все они с методом AnyMethod? Так не получается) var t =...

Вызов метода с одним именем у объектов разных типов
Здравствуйте. Подскажите как решить задачу. Есть 3 класса: A, B, C которые не связаны друг с другом и не наследуют от общего класса. В...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru