Форум программистов, компьютерный форум CyberForum.ru

Массивы структур - C++

Восстановить пароль Регистрация
 
LEBRON32RUS
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 90
27.02.2013, 23:57     Массивы структур #1
Ввести координаты начала и конца N отрезков на плоскости.Написать функцию определяющую пересекаются два отрезка или нет.используя эту функцию вывести список всех пересечений среди заданных отрезков.Реализовать через массив структур.данные считаются из файла по алгоритму:первая строка:Количество значений.вторая строка и послед-е-соотв значение.

помогите пожалуйста как такое реализовать?с другом вечер просидели ничего не вышло.обьясните пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 23:57     Массивы структур
Посмотрите здесь:

C++ Массивы структур
C++ Массивы структур
Массивы структур C++
C++ Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Массивы структур и массивы строк C++
Массивы структур C++
Массивы из структур C++
C++ Массивы структур, массивы векторов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
28.02.2013, 08:35     Массивы структур #2
Только за алгоритм определения пересечения не ручаюсь. Взят отсюда.
C++
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
#include <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
struct TPoint
{
   int x, y;
};
 
struct TSegment
{
   TPoint a, b;
};
 
//----------------------------------------------//
void PrintSegment(const TSegment& segment)
{
   cout << "{[" << segment.a.x << "," << segment.a.y << "],"
        << "["  << segment.b.x << "," << segment.b.y << "]}";
}
//----------------------------------------------//
void PrintAllSegments(TSegment* array, size_t size)
{
   for (size_t i = 0; i < size; ++i)
   {
      PrintSegment(array[i]);
      cout << endl;
   }
}
//----------------------------------------------//
bool Intersection(const TSegment& one, const TSegment& two)
{
   int v1 = (two.b.x-two.a.x)*(one.a.y-two.a.y) - (two.b.y-two.a.y)*(one.a.x-two.a.x);
   int v2 = (two.b.x-two.a.x)*(one.b.y-two.a.y) - (two.b.y-two.a.y)*(one.b.x-two.a.x);
   int v3 = (one.b.x-one.a.x)*(two.a.y-one.a.y) - (one.b.y-one.a.y)*(two.a.x-one.a.x);
   int v4 = (one.b.x-one.a.x)*(two.b.y-one.a.y) - (one.b.y-one.a.y)*(two.b.x-one.a.x);
 
   return ((v1*v2 < 0) && (v3*v4 < 0));
}
//----------------------------------------------//
void PrintIntersection(TSegment* array, size_t size)
{
   for (size_t i = 0; i < size-1; ++i)
   {
      for (size_t j = i+1; j < size; ++j)
      {
         if (Intersection(array[i], array[j]))
         {
            PrintSegment(array[i]);
            cout << " and ";
            PrintSegment(array[j]);
            cout << endl;
         }
      }
   }
}
//----------------------------------------------//
 
int main(int argc, const char* argv[])
{
   if (argc != 2)
   {
      cerr << "Usage: program.exe <FILE.txt>" << endl;
      system("PAUSE");
      return 1;
   }
 
   ifstream f(argv[1]);
 
   if (!f.is_open())
   {
      cerr << "Error: file " << argv[1] << " not opened ..." << endl;
      return 1;
   }
 
   size_t size;
   f >> size;
 
   TSegment* array = new TSegment[size];
 
   for (size_t i = 0; (i < size) && !f.eof(); ++i)
   {
      f >> array[i].a.x >> array[i].a.y >> array[i].b.x >> array[i].b.y;
   }
 
   f.close();
 
   PrintAllSegments(array, size);
 
   cout << endl << "intersecting:" << endl;
   PrintIntersection(array, size);
 
   delete[] array;
 
   return 0;
}
Файл с исходными данными:
Код
4
13 -1 9 -9
-8 -2 8 8
3 3 -3 -3
-3 3 3 -3
Массивы структур

Исходник + бинарник: program.7z
LEBRON32RUS
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 90
28.02.2013, 14:04  [ТС]     Массивы структур #3
спасибо вам.у меня есть формулы пересечений.просто я не знал как через массив реализовывать.
Yandex
Объявления
28.02.2013, 14:04     Массивы структур
Ответ Создать тему
Опции темы

Текущее время: 21:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru