Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Novichokvc++

Пожалуйста, доделайте задачу (до 23 декабря)

17.12.2011, 16:31. Показов 800. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я совсем новичок в С++. На автомат в вузе дали задачу на темы, которые будут только в следующем семестре. Очень хочется сделать, потому что весь семестр старался, сдавал задачи, отчёты по ним, писал контрольные. Итак,
условие: заданы 6 точек (250, 190), (500, 340), (50, 340), (350, 40), (100, 140), (350, 190). Занести указанные координаты точек в массивы Х и Y. Применяя генератор перестановок, найти среди этих точек вершины выпуклого четырёхугольника, вывести их координаты и изобразить фигуру на дисплее. Точки изображайте закрашенными кружками. В интернете нашёл отдельные части своей задачи, а вот как их связать, честно не знаю. Уже немало с ней помучался. Пожалуйста, помогите. Время поджимает.
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <math.hpp>
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
typedef struct {
  float x, y;
} Vect2D;
inline int classify_point2D(Vect2D p0, Vect2D p1, Vect2D p2) {
  return (p1.x-p0.x)*(p2.y-p0.y) - (p2.x-p0.x)*(p1.y-p0.y);
}
bool is_poly_convex2D(Vect2D * poly, int np) {
  // треугольник - всегда выпуклый.
  if (np == 3) return true;
  int res = Sign(classify_point2D(poly[0], poly[1], poly[2]));
  for (int i = 1; i < np; i++)
  if (res != Sign(classify_point2D(poly[i], poly[(i+1)%np], poly[(i+2) %np])))
  return false;
  return true;
}
template <typename Iterator>
bool next_combination(const Iterator first, Iterator k, const Iterator last)
{
   if ((first == last) || (first == k) || (last == k))
      return false;
   Iterator i1 = first;
   Iterator i2 = last;
   ++i1;
   if (last == i1)
      return false;
   i1 = last;
   --i1;
   i1 = k;
   --i2;
   while (first != i1)
   {
      if (*--i1 < *i2)
      {
         Iterator j = k;
         while (!(*i1 < *j)) ++j;
         std::iter_swap(i1,j);
         ++i1;
         ++j;
         i2 = k;
         std::rotate(i1,j,last);
         while (last != j)
         {
            ++j;
            ++i2;
         }
         std::rotate(k,i2,last);
         return true;
      }
   }
   std::rotate(first,k,last);
   return false;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{ 
int X[6]={250, 500, 50, 350, 100, 350};
int Y[6]={190,340,340,40,140,190};
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TPoint points [4];
Canvas->Pen->Color = clBlack;
points[0].x = ;
points[0].y = ;
points[1].x = ;
points[1].y = ;
points[2].x = ;
points[2].y = ;
points[3].x = ;
points[3].y = ;
 
Canvas->Polyline( points,4);
 
}
//---------------------------------------------------------------------------
Добавлено через 18 часов 15 минут
Ну я серьёзно не понимаю. Не могу разобраться с функциями, особенно с генератором перестановок. На странице, откуда его взял (американский форум), мало что понял, так как с английским у меня не очень. В задачнике приведён пример генератора на Паскале.
Procedure GenPer (Var p:Array of integer; Var g:Boolean);
Var j, m, n:integer;
begin
n:= High(p)+1;
Repeat n:=n-1;
m:=p[0];
For j:=1 to n do p[j-1]:=p[j]; p[n]= m; g:= m<=n
Until g or (n=1
end;
Мне кажется, даже в задачнике что-то не так с "орфографией".
Пытался перевести на С++ - ошибку выдаёт([C++ Warning] Unit1.cpp(63): W8060 Possibly incorrect assignment).
Вот, что на данный момент имею:
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
99
100
//---------------------------------------------------------------------------
#include <iostream.h>
#include <math.hpp>
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
typedef struct {
float x, y;
} Vect2D;
inline int classify_point2D(Vect2D p0, Vect2D p1, Vect2D p2) {
return (p1.x-p0.x)*(p2.y-p0.y) - (p2.x-p0.x)*(p1.y-p0.y);
}
bool is_poly_convex2D(Vect2D * poly, int np) {
// треугольник - всегда выпуклый.
if (np == 3) return true;
int res = Sign(classify_point2D(poly[0], poly[1], poly[2]));
for (int i = 1; i < np; i++)
if (res != Sign(classify_point2D(poly[i], poly[(i+1)%np], poly[(i+2) %np])))
return false;
return true;
}
template <typename Iterator>
bool next_combination(const Iterator first, Iterator k, const Iterator last)
{ //вариант генератора перестановок с сайта
if ((first == last) || (first == k) || (last == k))
return false;
Iterator i1 = first;
Iterator i2 = last;
++i1;
if (last == i1)
return false;
i1 = last;
--i1;
i1 = k;
--i2;
while (first != i1)
{
if (*--i1 < *i2)
{
Iterator j = k;
while (!(*i1 < *j)) ++j;
std::iter_swap(i1,j);
++i1;
++j;
i2 = k;
std::rotate(i1,j,last);
while (last != j)
{
++j;
++i2;
}
std::rotate(k,i2,last);
return true;
}
}
std::rotate(first,k,last);
return false;
}
bool g(int p[]){int j,m,n; //мой перевод генератора перестановок из задачника
n=7; do {n=n-1;m=p[0];
for (j=1;j<=n;j++){p[j-1]=p[j];p[n]=m;//не знаю, как перевести g:=m<=n
}}
while (g ||(n=1));
return false// не знаю, что возвращать
;}
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ int X[6]={250, 500, 50, 350, 100, 350};
int Y[6]={190,340,340,40,140,190};}
int n[6]={1,2,3,4,5,6};
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int X[6]={250, 500, 50, 350, 100, 350};
int Y[6]={190,340,340,40,140,190};
int n[6]={1,2,3,4,5,6};
bool g;
bool is_poly_convex2D;
g==true; while (g) do{ if (is_poly_convex2D==true)
TPoint points [4];
Canvas->Pen->Color = clBlack;
points[0].x = ;
points[0].y = ; //не знаю, как записать координаты точек, которые удовлетворяют условию
points[1].x = ;
points[1].y = ;
points[2].x = ;
points[2].y = ;
points[3].x = ;
points[3].y = ;
 
Canvas->Polyline( points,4);} }
 
}
//---------------------------------------------------------------------------
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2011, 16:31
Ответы с готовыми решениями:

Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем)
Помогите пожалуйста дописать программу, мне надо ее написать на Visual C++ 6.0 Вот задача В массиве целых чисел,расположенном в...

Доделайте пожалуйста программу
Выручайте, нужна вот это программа https://www.cyberforum.ru/cpp-beginners/thread545795.html, кому не сложно можно вас попросит скинуть уже...

Доделайте пожалуйста программу
Задана матрица Z(5,4). Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые...

1
Novichokvc++
18.12.2011, 22:54
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//---------------------------------------------------------------------------
#include <iostream.h>
#include <math.hpp>
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
 
 
typedef struct {
float x, y;
} Vect2D;
 
 
inline int classify_point2D(Vect2D p0, Vect2D p1, Vect2D p2) {
return (p1.x-p0.x)*(p2.y-p0.y) - (p2.x-p0.x)*(p1.y-p0.y);
}
 
 
bool is_poly_convex2D(Vect2D * poly, int np) {
// треугольник - всегда выпуклый.
if (np == 3) return true;
int res = Sign(classify_point2D(poly[0], poly[1], poly[2]));
for (int i = 1; i < np; i++)
if (res != Sign(classify_point2D(poly[i], poly[(i+1)%np], poly[(i+2) %np])))
return false;
return true;
}
 
 
template <typename Iterator>
bool next_combination(const Iterator first, Iterator k, const Iterator last)
{ //вариант генератора перестановок с сайта
if ((first == last) || (first == k) || (last == k))
return false;
Iterator i1 = first;
Iterator i2 = last;
++i1;
if (last == i1)
return false;
i1 = last;
--i1;
i1 = k;
--i2;
while (first != i1)
{
if (*--i1 < *i2)
{
Iterator j = k;
while (!(*i1 < *j)) ++j;
std::iter_swap(i1,j);
++i1;
++j;
i2 = k;
std::rotate(i1,j,last);
while (last != j)
{
++j;
++i2;
}
std::rotate(k,i2,last);
return true;
}
}
std::rotate(first,k,last);
return false;
}
 
 
bool g(int p[]){
int j,m,n; //мой перевод генератора перестановок из задачника
n=7;
do {
n=n-1;
m=p[0];
for (j=1;j<=n;j++){
p[j-1]=p[j];
p[n]=m;
//не знаю, как перевести на C++ g:=m<=n
}}
while (g ||(n=1));
return false// не знаю, возвращать false или true
;}
 
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
 
 
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ 
int X[6]={250, 500, 50, 350, 100, 350};
int Y[6]={190,340,340,40,140,190};}
int n[6]={1,2,3,4,5,6};
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int X[6]={250, 500, 50, 350, 100, 350};
int Y[6]={190,340,340,40,140,190};
int n[6]={1,2,3,4,5,6};
bool g;
bool is_poly_convex2D;
g==true;
while (g) do
{ 
if (is_poly_convex2D==true)
TPoint points [4];
Canvas->Pen->Color = clBlack;
points[0].x = ;
points[0].y = ; //не знаю, как записать координаты точек, которые удовлетворяют условию
points[1].x = ;
points[1].y = ;
points[2].x = ;
points[2].y = ;
points[3].x = ;
points[3].y = ;
 
Canvas->Polyline( points,4);} }
 
}
//---------------------------------------------------------------------------
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2011, 22:54
Помогаю со студенческими работами здесь

Доделайте мне пожалуйста таймер
Как нужно сделать чтобы время отсчета синхронизировалось с временем и датой компьютера? У меня сейчас написан скрипт таким образом, что...

Дорогие форумчане доделайте пожалуйста программу на Паскале
Ребята помогите пожалуйста. Задание следующие: нужно сделать так, чтобы 1 бегала по синусоиде, заранее спасибо, вот исходник с бегущий 1: ...

Переделайте задачу пожалуйста
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первой...

Пожалуйста доработайте задачу
Здравствуйте, помогите доработать задачу. Нужно чтобы S(x) и Y(x) были одинаковые числа. Задача: #include &lt;stdio.h&gt; #include...

Объясните задачу пожалуйста
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; void main(void) { char str; int Word =...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru