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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка компиляции http://www.cyberforum.ru/cpp-beginners/thread796820.html
#include <iostream> class X { public: static int a; }; void main() {
C++ Написать программу, в которой на экран выводится картинка Здравствуйте) помогите, пожалуйста, написать программу ( С++) в которой на экран выводится такая картинка * * * * * ... http://www.cyberforum.ru/cpp-beginners/thread796799.html
C++ String.Insert
Помогите, пожалуйста, в чем проблема String gr; gr = "3x+5"; String t = "00"; gr.Insert(1, t); на выходе строка gr как была 3x+5 так и осталась. VS 2012
Вставить перед каждой серией минимальный элемент массива C++
Доброго времени суток. Напишите, пожалуйста, прогу для этого задания . ( в коде не должны быть использованы квадратные скобки, т.е без массивов, с использованием динамической памяти) Очень надеюсь на вас! Формируется массив, элементами которого является числовая последовательность, за-канчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих...
C++ После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями http://www.cyberforum.ru/cpp-beginners/thread796763.html
Доброго времени суток. Напишите, пожалуйста, прогу для этого задания . ( в нем не должны быть использованы квадратные скобки) Дана матрица размера n×n. После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями. Очень надеюсь на вас!
C++ Правильно ли построил класс? Здравствуйте, нужен совет. задание такое: построить иерархию домашней электротехники. я сделал общий абстрактный класс который содержит общую информацию и создал много наследников типа "устройства термической обработки", "устройства освещения", "устройства связи", "измерительные устройства", "устройства хранения продуктов. вопрос: нормально ли это? а то объединять в одном классе электроплиту,... подробнее

Показать сообщение отдельно
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
28.02.2013, 08:35     Массивы структур
Только за алгоритм определения пересечения не ручаюсь. Взят отсюда.
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
 
Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru