Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
8 / 8 / 3
Регистрация: 01.02.2010
Сообщений: 154
1

плоскость

13.06.2011, 19:42. Просмотров 825. Ответов 7
Метки нет (Все метки)

Добрый Вечер!!!
На плоскости своими целыми координатами заданы N точек, обладающих некоторой
массой (для каждой точки – свое значение). С некоторого момента происходит
следующий процесс: точка с наименьшей массой исчезает, и передает свою массу
ближайшей к ней точке. Процесс продолжается до тех пор, пока не останется одна точка.
Найти эту точку.
Ограничения: количество точек не превосходит 1000, масса точек задана целыми неотрицательными
числами и не превосходит 20
Формат входного файла input.txt
Первая строка - целое число N (1<=N<=1000) - количество точек на плоскости
Следующие N строк содержат каждая по три целых числа через пробел: X, Y (-1000<=X, Y<=1000)
и M (0<=M<=20) - координаты точки на плоскости и ее массу
Формат выходного файла output.txt
Первая строка - три целых числа через пробел - координаты и масса оставшейся точки
Пример входного файла
3
100 100 5
1 2 6
2 3 4
Пример выходного файла
1 2 15
Вот начало программы
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
package contest76;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
    public static void main(String[] args)  throws IOException {
    }
 
    }
 
    class Matrix{
        int array[][];
        int n;
        int m;
        int x;
        int y;
        int mass;
 
 
    Matrix() throws IOException {
        FileReader fin = new FileReader("input.txt");
        Scanner scr = new Scanner(fin);
        n = scr.nextInt();
        m = scr.nextInt();
        array = new int [n][m];
 
        for( int i = 1; i <= n; i++){
            for( int j = 1; j <= m; j++){
                array[i][j] = scr.nextInt();
            }//for j
        }//for i
        
      
        
        fin.close();
        }//constructor
 
    int MinMass() throws IOException{
        PrintWriter fout = new PrintWriter("output.txt");
        int result = array[1][3];
        int mi = 0;
        for( int i = 1; i <= n; i++){
            if ( result < array[i][3]){
                result = array[i][3];
                mi = i;
            }//if
            double minDistance = Math.sqrt(Math.pow((array[i][1]-array[i+1][1]),2)+Math.pow((array[i][2]-array[i+1][2]),2));
            if ( minDistance )
 
 
 
        }//for
        return result;
        
        }//MinMass
    }//matrix
 
вторая строчка лишняя
Зарнее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2011, 19:42
Ответы с готовыми решениями:

Координатная плоскость с 4 заданными точками
Дана координатная плоскость с 4 заданными точками которые образуют фигуру, найти координаты...

плоскость в 3d
Здраствуйте у меня такая проблема: у меня есть функция от 2 переменных, и мне нужно отобразить...

плоскость
помогите пожалуйста как в маткаде построить плоскость 4х-5y-10z-20=0

Плоскость в 3d
Изучаю самостоятельно 3d вопрос таков нарисовал я линию ломанную и замыкаю ее получается некая...

7
80 / 80 / 8
Регистрация: 10.06.2011
Сообщений: 258
14.06.2011, 00:13 2
Мне непонятно что ты считываеш. Зачем считывать 2 числа вподряд и создавать такой масив? Такой информации нет в файле.
Проще/нагляднее всё сделать более объектно ориентированно:
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
66
67
68
public class PointMerger {
    private List<WeightedPoint> pointList;
 
    class WeightedPoint {
        private int x;
        private int y;
 
        public int getX() {
            return x;
        }
 
        public int getY() {
            return y;
        }
 
        public int getWeight() {
            return weight;
        }
 
        private int weight;
 
        public WeightedPoint(int x, int y, int weight) {
            this.x = x;
            this.y = y;
            this.weight = weight;
        }
 
    }
 
    public static void main(String[] args) throws FileNotFoundException {
        PointMerger pm = new PointMerger(new File("c:\\1.txt"));
    }
 
    public PointMerger(File file) throws FileNotFoundException {
        pointList = new ArrayList<WeightedPoint>();
        Scanner scanner = new Scanner(file);
        int count = scanner.nextInt();
        for (int i=0;i<count;i++) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            int weight = scanner.nextInt();
            pointList.add(new WeightedPoint(x, y, weight));
        }
    }
    
    public void mergePoints() {
        while (pointList.size()>1) {
            WeightedPoint minPoint = findMinPoint();
            WeightedPoint nearestPoint = findNearestPoint(minPoint);
            WeightedPoint mergedPoint = createMergedPoint(nearestPoint, minPoint);
            pointList.remove(minPoint);
            pointList.remove(nearestPoint);
            pointList.add(mergedPoint);
        }
    }
    
    private WeightedPoint findMinPoint() {
        //сам
    }
    
    private WeightedPoint findNearestPoint(WeightedPoint to) {
        //сам
    }
    
    private WeightedPoint createMergedPoint(WeightedPoint target, WeightedPoint source) {
        //сам
    }   
}
1
8 / 8 / 3
Регистрация: 01.02.2010
Сообщений: 154
14.06.2011, 00:15  [ТС] 3
Спасибо огромное ! А извините это вес программа ?
0
80 / 80 / 8
Регистрация: 10.06.2011
Сообщений: 258
14.06.2011, 00:26 4
Цитата Сообщение от maisdanel Посмотреть сообщение
А извините это вес программа ?
К сожалению не понял.
0
8 / 8 / 3
Регистрация: 01.02.2010
Сообщений: 154
14.06.2011, 00:30  [ТС] 5
Цитата Сообщение от XHelp Посмотреть сообщение
Мне непонятно что ты считываеш. Зачем считывать 2 числа вподряд и создавать такой масив? Такой информации нет в файле.
Проще/нагляднее всё сделать более объектно ориентированно:
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
66
67
68
public class PointMerger {
    private List<WeightedPoint> pointList;
 
    class WeightedPoint {
        private int x;
        private int y;
 
        public int getX() {
            return x;
        }
 
        public int getY() {
            return y;
        }
 
        public int getWeight() {
            return weight;
        }
 
        private int weight;
 
        public WeightedPoint(int x, int y, int weight) {
            this.x = x;
            this.y = y;
            this.weight = weight;
        }
 
    }
 
    public static void main(String[] args) throws FileNotFoundException {
        PointMerger pm = new PointMerger(new File("c:\\1.txt"));
    }
 
    public PointMerger(File file) throws FileNotFoundException {
        pointList = new ArrayList<WeightedPoint>();
        Scanner scanner = new Scanner(file);
        int count = scanner.nextInt();
        for (int i=0;i<count;i++) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            int weight = scanner.nextInt();
            pointList.add(new WeightedPoint(x, y, weight));
        }
    }
    
    public void mergePoints() {
        while (pointList.size()>1) {
            WeightedPoint minPoint = findMinPoint();
            WeightedPoint nearestPoint = findNearestPoint(minPoint);
            WeightedPoint mergedPoint = createMergedPoint(nearestPoint, minPoint);
            pointList.remove(minPoint);
            pointList.remove(nearestPoint);
            pointList.add(mergedPoint);
        }
    }
    
    private WeightedPoint findMinPoint() {
        //сам
    }
    
    private WeightedPoint findNearestPoint(WeightedPoint to) {
        //сам
    }
    
    private WeightedPoint createMergedPoint(WeightedPoint target, WeightedPoint source) {
        //сам
    }   
}
Так программа будет правильно робтать ?
0
80 / 80 / 8
Регистрация: 10.06.2011
Сообщений: 258
14.06.2011, 00:57 6
Ну если правильно напишеш остальные методы, то да. По крайней мере на данном примере всё работает как надо.
1
8 / 8 / 3
Регистрация: 01.02.2010
Сообщений: 154
14.06.2011, 00:58  [ТС] 7
извините а можете дописать плиз завтра у меня хачот полавина прогы не получается спасибо зарнее
0
80 / 80 / 8
Регистрация: 10.06.2011
Сообщений: 258
14.06.2011, 01:05 8
Ну... пару вещей придётся всё-таки самому делать, но это всего пару строчек, так что справишся. С готовый решением ничему не научишся...
(кстати это быстрое и не соовсем красивое решение)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
public class PointMerger {
    private List<WeightedPoint> pointList;
 
    class WeightedPoint {
        private int x;
        private int y;
        private int weight;
 
        public int getX() {
            return x;
        }
 
        public int getY() {
            return y;
        }
 
        public int getWeight() {
            return weight;
        }
 
        public WeightedPoint(int x, int y, int weight) {
            this.x = x;
            this.y = y;
            this.weight = weight;
        }
 
        public String toString() {
            return "Point at [" + x + ";" + y + "], weight: " + weight;
        }
 
    }
 
    public static void main(String[] args) throws FileNotFoundException {
        PointMerger pm = new PointMerger(new File("c:\\1.txt"));
        pm.mergePoints();
        pm.writeToFile("c:\\2.txt");
    }
 
    public PointMerger(File file) throws FileNotFoundException {
        pointList = new ArrayList<WeightedPoint>();
        Scanner scanner = new Scanner(file);
        int count = scanner.nextInt();
        for (int i = 0; i < count; i++) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            int weight = scanner.nextInt();
            pointList.add(new WeightedPoint(x, y, weight));
        }
    }
 
    public void mergePoints() {
        while (pointList.size() > 1) {
            WeightedPoint minPoint = findMinPoint();
            WeightedPoint nearestPoint = findNearestPoint(minPoint);
            WeightedPoint mergedPoint = createMergedPoint(nearestPoint,
                    minPoint);
            pointList.remove(minPoint);
            pointList.remove(nearestPoint);
            pointList.add(mergedPoint);
        }
        System.out.println(pointList.get(0));
    }
 
    private WeightedPoint findMinPoint() {
        WeightedPoint min = null;
        if (pointList.size() > 1) {
            min = pointList.get(0);
            for (int i = 1; i < pointList.size(); i++) {
                if (min.getWeight() > pointList.get(i).getWeight()) {
                    min = pointList.get(i);
                }
            }
        }
        return min;
    }
 
    private WeightedPoint findNearestPoint(WeightedPoint to) {
        WeightedPoint min = null;
        double minDistance = 0;
        if (pointList.size() > 1) {
            if (to != pointList.get(0)) {
                min = pointList.get(0);
                minDistance = calcDistance(to, min);
            } else {
                min = pointList.get(1);
                minDistance = calcDistance(to, min);
            }
            for (WeightedPoint currentPoint : pointList) {
                if (currentPoint != to) {
                    if (minDistance > calcDistance(currentPoint, to)) {
                        min = currentPoint;
                        minDistance = calcDistance(currentPoint, to);
                    }
                }
            }
        }
        return min;
    }
 
    private WeightedPoint createMergedPoint(WeightedPoint target,
            WeightedPoint source) {
//сам
    }
    
    public void writeToFile(String path) {
//сам
    }
    
    private double calcDistance(WeightedPoint from, WeightedPoint to) {
//сам
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2011, 01:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

плоскость
Даны целочисленные координаты точки на плоскости.Если точка совпадает с началом координат,то...

Бесконечная плоскость
Подскажите пожалуйста, можно ли и как создать бесконечную плоскость в opengl'е?

Плоскость отсечения
Здравствуйте, у меня вопрос: Функция glClipPlane(GL_CLIP_PLANE0, Clip_eq); Что означают элементы...

Построить плоскость x=0
Здравствуйте. Можно ли в Scilab построить плоскость x=0? Мне нужно построить график в 3D ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.