1 / 1 / 0
Регистрация: 01.12.2013
Сообщений: 5

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

21.06.2014, 19:32. Показов 2972. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru