Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/117: Рейтинг темы: голосов - 117, средняя оценка - 4.96
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
1

Массив точек point

24.04.2011, 19:08. Показов 21228. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем. Писала в другой теме, но там пока тишина, поэтому пришлось создать новую.

Есть необходимость сделать массив Point неограниченным (но конечным). Как задавать такой массив, я знаю, н-р, вот так
C++
1
2
3
4
5
6
7
8
array <Point>^ points =
                        {Point(100,200),//a
                        Point(120,150),//b
                        Point(150,100),//c
                        Point(162.5,150),//d
                        Point(175,175),//e
                        Point(200,200),//f
                        Point(125,375)};//g
но он ограничен, а мне надо от 1 до n точек, для того чтоб построить по ним график с помощью
C++
1
>DrawCurve(anyPen,anyPointMas);
Подскажите, плз, как это сделать
работаю в c++, crl, windows form application.

p.s. рисовать графики именно там, и именно с помощью массива точек и DrawCurve - идея не моя, а преподавателя - хочет, чтоб так ему сделали

Добавлено через 8 часов 1 минуту
гуглила... безрезультатно ...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2011, 19:08
Ответы с готовыми решениями:

С++/CLI VS2008 создать глобальный управляемый динамический массив Point
Нужен глобальный динамический массив типа Point для переопределения события onPaint. При нажатии...

Массив Point в WindowsForm
Привет всем.Подскажите пожалуйста как в проекте WindowsForm в заголовочном файле объявить один из...

Исправить ошибку "Point: собственный массив не может содержать этот управляемый тип"
ref class Point { public: int x,y; Point(){x=0;y=0;}; }; ref class Triangular { private:

Как создать управляемый массив координатных точек?
Во всех примерах это показано так: Point point1 = Point(10, 15); Point point2 =...

38
4 / 4 / 0
Регистрация: 01.06.2010
Сообщений: 27
25.04.2011, 12:16 2
Не понял? Не можешь Динамический массив сделать? DrawCurve принимает указатель на массив структур Point. Если известно число точек, или оно вводится программно как n то:
C++
1
2
3
int n = number_of_points;
Point* points;
points = new Point[n];
Если создать специальную функцию, можно еще даже в процессе программы добавлять элементы(или удалять);
Всё, либо я вопрос не понял.
1
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
25.04.2011, 13:01 3
Лучший ответ Сообщение было отмечено как решение

Решение

Если количество элементов массива определится в программе, то да динамический массив. А если не определится, то есть просто нужно добавлять в массив по одному-два элемента или по несколько, короче если полная неопределённость с количеством элементов, тогда надо использовать контейнер vector
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
#include <iostream>
#include <vector>
 
using namespace std;
class Point{
 public:
  Point () {}        
   Point (int x_, int y_): x(x_), y(y_) {}        
  ~Point () {}        
 public:
  int x;
  int y;
};
 
 
int main(){
 Point point_0 (2, 3);
 Point point_1 (4, 5);
 Point point_2 (6, 7);
 Point point_3 (8, 9);
 Point point_4 (23, 45);
 
 
 vector <Point> vec;       
 
 //А теперь сколько хочешь точек, столько и пихаешь в вектор. 
 vec.push_back (point_0);
 vec.push_back (point_1);
 vec.push_back (point_2);
}
Для vector определены разные операции, их немало и на их основе можно составлять свои, смотреть здесь:
http://www.cplusplus.com/reference/stl/vector/

Или у Аммерааля; в сети есть русский перевод этой книги.
3
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 22:21  [ТС] 4
мне надо, чтоб в цикле iму элементу массива, который содержит точки, присваивалось некоторое значение
C++
1
2
3
4
5
6
7
8
9
10
 t=30;
             i=0;
             while (i<=t) {
               //y=System::Convert::ToDouble(y);  
               mC_B0[i][0]=i;
                      mC_B0[i][1]=(sin(2*PI*(i-f)/Fiz_P))*100;  
               curvePnt0[i] = Point((mC_B0[i][0]),mC_B0[i][1]);
                               ++i;
               }
 myGr->DrawCurve(anyPen,curvePnt0);
при этом Fiz_P,f - константы, mC_B0 - двустолбцовый массив, а curvePnt0 - массив точек с 30ю константами (другого способа на момент написания не нашла), которые потом тупо переприсваиваются. А хотелось бы, чтоб до выполнения цикла массив curvePnt0 был инициализирован так, чтоб компилятор не ругался. в tp или delphi это бы где-то так выглядело
Pascal
1
curvePnt0:array[1..n] of  point
естесственно, я осознаю, что никаких point там нет
p.s. я, наверно, изначально неправильно сформулировала свой вопрос
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
25.04.2011, 22:42 5
Смотри.
curvePnt0 это массив элементов,каждый из которых точка. Так? Ты объявляешь массив из
скольки-то элементов типа Point и компилятор на это ругается

Point curvePnt0 [67];

Так или нет?
В любом случае дай определение
curvePnt0 и Point
1
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 22:52  [ТС] 6
сделала вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Point* curvePnt0;
t=n;
             i=0;
             while (i<=t) {
               i=System::Convert::ToDouble(i);  
               mC_B0[i][0]=i;
             
               mC_B0[i][1]=(sin(2*PI*(i-f)/Fiz_P))*100;
               
               curvePnt0= new point[i];
              
 
               curvePnt0[i] = Point((mC_B0[i][0]),mC_B0[i][1]);
              
               i=i+1;
               }
, ругается.пишет
C++
1
2
3
4
5
6
error C2664: 'void System::Drawing::Graphics::DrawCurve(System::Drawing::Pen ^,cli::array<Type,dimension> ^)' : cannot convert parameter 2 from 'System::Drawing::Point *' to 'cli::array<Type,dimension> ^'
1>        with
1>        [
1>            Type=System::Drawing::PointF,
1>            dimension=1
1>        ]
я-то, понимаю, что он воспринимает 2й параметр как точку, а не как массив, но мы ж его вроде массивом делали
то ли я, то ли лыжи ...

Добавлено через 3 минуты
Цитата Сообщение от kravam Посмотреть сообщение
curvePnt0 это массив элементов,каждый из которых точка. Так?
так
Ты объявляешь массив из
скольки-то элементов типа Point и компилятор на это ругается
в том-то и дело, что я не знаю, как его объявить
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
25.04.2011, 22:55 7
понятно, покажи определение класса Point
0
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 23:02  [ТС] 8
только не смейся.у меня его вообще нет.
я вот так делала
C++
1
array<Point>^ curvePnt0={Point(50,50),Point(50,50)....и так 31 раз...,Point(50,50)}
и все работало
у меня проблемы с синтаксисом c++, а кое-где еще и с пониманием...
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
25.04.2011, 23:09 9
Слушай, я не пойму
C++
1
Point* curvePnt0
и

C++
1
array<Point>^ curvePnt0={Point(50,50),Point(50,50)....и так 31 раз...,Point(50,50)}
Так ты определись с определением
curvePnt0
а то пока я наблюдаю два определения curvePnt0, что-то нездоровое

Добавлено через 46 секунд
Так, ё, препод требует именно MSVC? DEV C++ не пойдёт?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.04.2011, 23:12 10
kravam, Судя по всему вообще требуется именно CLI.
0
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 23:18  [ТС] 11
Цитата Сообщение от kravam Посмотреть сообщение
Так ты определись с определением
curvePnt0
ты не понял, я второе определение давно закомментила (я имела в виду, что так было, когда этот массив содержал определенное кол-во точек, а сейчас я хочу(точнее, препод),чтоб он был неограниченным, т е до n),соответственно, сейчас в программе только первое определение. короче, вот весь код
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#pragma once
#include <string>
#include <iostream>
#include <cstdlib>
#include <math.h>
 
 
 
using namespace std;
 const double PI = 3.1415926535897932384626433832795;
 const double Fiz_P=23.688437;
 const double Emo_P=28.426125;
 const double Int_P=33.163812;
 
namespace My3_third {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
 
    /// <summary>
    /// Summary for Form1
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    ///          'Resource File Name' property for the managed resource compiler tool
    ///          associated with all .resx files this class depends on.  Otherwise,
    ///          the designers will not be able to interact properly with localized
    ///          resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
 
    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::DateTimePicker^  dateTimePicker1;
    protected: 
    private: System::Windows::Forms::DateTimePicker^  dateTimePicker2;
    private: System::Windows::Forms::PictureBox^  pictureBox1;
    private: System::Windows::Forms::Button^  button1;
 
    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->dateTimePicker1 = (gcnew System::Windows::Forms::DateTimePicker());
            this->dateTimePicker2 = (gcnew System::Windows::Forms::DateTimePicker());
            this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
            this->button1 = (gcnew System::Windows::Forms::Button());
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->BeginInit();
            this->SuspendLayout();
            // 
            // dateTimePicker1
            // 
            this->dateTimePicker1->Location = System::Drawing::Point(27, 25);
            this->dateTimePicker1->Name = L"dateTimePicker1";
            this->dateTimePicker1->Size = System::Drawing::Size(197, 20);
            this->dateTimePicker1->TabIndex = 0;
            // 
            // dateTimePicker2
            // 
            this->dateTimePicker2->Location = System::Drawing::Point(513, 25);
            this->dateTimePicker2->Name = L"dateTimePicker2";
            this->dateTimePicker2->Size = System::Drawing::Size(200, 20);
            this->dateTimePicker2->TabIndex = 1;
            // 
            // pictureBox1
            // 
            this->pictureBox1->Location = System::Drawing::Point(25, 61);
            this->pictureBox1->Name = L"pictureBox1";
            this->pictureBox1->Size = System::Drawing::Size(776, 369);
            this->pictureBox1->TabIndex = 2;
            this->pictureBox1->TabStop = false;
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(292, 12);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(160, 33);
            this->button1->TabIndex = 3;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(823, 438);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->pictureBox1);
            this->Controls->Add(this->dateTimePicker2);
            this->Controls->Add(this->dateTimePicker1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->EndInit();
            this->ResumeLayout(false);
 
        }
#pragma endregion
 
System::Drawing::Graphics ^myGr;
        int f,t,i,y;
        int n;
        double min;
 
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 float mC_B0[100][2], mC_B1[100][2], mC_B2[100][2];
                 n=30;
        /*  array<Point>^ curvePnt0={Point(50,50),Point(50,50),Point(5,5),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50)};
          array<Point>^ curvePnt1={Point(50,50),Point(50,50),Point(5,5),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50)};
          array<Point>^ curvePnt2={Point(50,50),Point(50,50),Point(5,5),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
              Point(50,50),Point(50,50),Point(50,50),Point(50,50)};*/
                Point* curvePnt0;
                Point* curvePnt1;
                Point* curvePnt2;
 
                 i=0;
        
 
          System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8 );
          SolidBrush^ drawBrush = gcnew SolidBrush( Color::White );
          Pen^ whitePen = gcnew Pen( Color::White,0.1f );
              
          pictureBox1->Refresh();
 
 
          TimeSpan f_span_format=dateTimePicker2->Value-dateTimePicker1->Value;
                        f=f_span_format.Days;
 
             System::DateTime day = this->dateTimePicker2->Value;
             String^ drawString = System::Convert::ToString(day);
            
         
             t=n;
             i=0;
             while (i<=t) {
               i=System::Convert::ToDouble(i);  
               mC_B0[i][0]=i;
               mC_B1[i][0]=i;
               mC_B2[i][0]=i;
               mC_B0[i][1]=(sin(2*PI*(i-f)/Fiz_P))*100;
               mC_B1[i][1]=(sin(2*PI*(i-f)/Int_P))*100;
               mC_B2[i][1]=(sin(2*PI*(i-f)/Emo_P))*100;
               curvePnt0= new Point[i];
               curvePnt1= new Point[i];
               curvePnt2= new Point[i];
 
               curvePnt0[i] = Point((mC_B0[i][0]),mC_B0[i][1]);
               curvePnt1[i] = Point((mC_B1[i][0]),mC_B1[i][1]);
               curvePnt2[i] = Point((mC_B2[i][0]),mC_B2[i][1]);
              
               //drawString = System::Convert::ToString(day);
               //array<String^>^ split = drawString->Split('.');
               //drawString = split[0];
               //myGr->DrawString(drawString, drawFont, drawBrush, Point((y+0.5)*25,270));
               //myGr->DrawLine(whitePen, Point((y+1)*25,252), Point((y+1)*25,48));
               //day = day.AddDays(1);
               i=i+1;
               }
             Pen^ redPen = gcnew Pen( Color::Red,3.0f );
             Pen^ greenPen = gcnew Pen( Color::Green,3.0f );
             Pen^ bluePen = gcnew Pen( Color::Blue,3.0f );
               myGr->DrawCurve(greenPen,curvePnt0);
               myGr->DrawCurve(bluePen,curvePnt1);
               myGr->DrawCurve(redPen,curvePnt2);
               
              // String^ drawStringUp = "100%";
               //String^ drawStringMid = "0%";
               //String^ drawStringDown = "-100%";
               //Point drawPointUp = Point(0,48);
               //Point drawPointMid = Point(0,150);
               //Point drawPointDown = Point(0,252);
              
               //myGr->DrawString(drawStringUp, drawFont, drawBrush, drawPointUp);
               //myGr->DrawString(drawStringMid, drawFont, drawBrush, drawPointMid);
               //myGr->DrawString(drawStringDown, drawFont, drawBrush, drawPointDown);
 
              // myGr->DrawLine(whitePen, drawPointUp, Point(775,48));
              // myGr->DrawLine(whitePen, drawPointMid, Point(775,150));
              // myGr->DrawLine(whitePen, drawPointDown, Point(775,252));
             }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 myGr=pictureBox1->CreateGraphics();
             }
    };
}
препод хочет, чтоб именно так и именно там. изв.....ец
это я уже про другие задачи не говорю

Добавлено через 2 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Судя по всему вообще требуется именно CLI.
ну, я вроде бы говорила уже: работаю в c++, crl, windows form application.(если честно, я вообще ничего помимо того, где мы работаем, не знаю.где говорят, там и пишем)
0
ForEveR
25.04.2011, 23:20
  #12

Не по теме:

(если честно, я вообще ничего помимо того, где мы работаем, не знаю.где говорят, там и пишем)
Я прошу прощения, но вы учитесь на программиста?

0
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 23:25  [ТС] 13
Цитата Сообщение от ForEveR Посмотреть сообщение
Я прошу прощения, но вы учитесь на программиста?
да, но программу по обучению не я придумываю (я вообще не понимаю, как можно дать на ИЗУЧЕНИЕ c++ 1 семестр с 1 академическим часом в неделю).(смысл обучения у нас на факультете - научить азам, а кому надо, тот сам дальше научится)
p.s. было бы время, я б и сама там поковырялась, но такового не имеется
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
25.04.2011, 23:35 14
Так, ясно всё. Ну в общем коль скоро у тебя компилилось раньше (компилилось ведь?!), значит, Point объявлен где-то; в глубине подключаемых файлов, не может быть не объявлен. Теперь давай посмотрим, для ОБЪЯВЛЕНОГО класса Point существует или нет пустой конструктор; Если не существует это и объясняет (вроде бы) всё происходящее;
Если не поняла, пропусти мимо ушей, а сделай так:


Значит, сделай, чтобы всё компилилось. То есть расскоменти чё надо и закоменти чё надо. Теперь вот это определение:
C++
1
2
3
4
5
6
          array<Point>^ curvePnt2={Point(50,50),Point(50,50),Point(5,5),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50)};
Мы чуть-чуть изменим.
Мы напишем сюда размер массива и один из элементов не укажем, то есть сделаем так:

C++
1
2
3
4
5
6
           array<Point>^ curvePnt2 [28]={Point(50,50),Point(50,50),Point(5,5),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),Point(50,50),
                          Point(50,50),Point(50,50),Point(50,50)};
Вот теперь по идее не должно компилиться, давай отписывайся по результатам.

Добавлено через 2 минуты
...Да, и это не азы, девушка. Это далеко не азы..
0
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
25.04.2011, 23:45  [ТС] 15
естеснно, оно компилиться не будет (точек там 30, а мы указываем [28])
в любом случае, сделала все, как посоветовал
итоги
C++
1
2
3
4
5
6
7
error C2078: too many initializers
error C2440: '=' : cannot convert from 'System::Drawing::Point' to 'cli::array<Type> ^'
1>        with
1>        [
1>            Type=System::Drawing::Point
1>        ]
1>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
ругается на строку с определением массива и на drawcurve.(до внесения этих изменений, ранняя версия работала)

Добавлено через 3 минуты
Цитата Сообщение от kravam Посмотреть сообщение
Да, и это не азы, девушка. Это далеко не азы
видимо, наше мин обр, считает по-другому, или считает, что у студентов должна быть непреодолимая тяга все самим изучать.
p.s. по части прог-ния над нами не так сильно насильствуют, по сравнению с мат-кой
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.04.2011, 23:58 16
Olchik, Студент и должен сам изучать программирование...
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
26.04.2011, 00:03 17
Слушай, стоп. Вернёмся к компилируемому варианту. Смотри. Ты определяешь три массива
curvePnt0, curvePnt1, curvePnt2

И тут же их инициализируешь и всё ОК. Но! В процессе проги оказывается, что тебе не нужны ни эти значения, ни собственно эти массивы, ибо потом ты пишешь:

C++
1
2
3
curvePnt0= new Point[i];
curvePnt1= new Point[i];
curvePnt2= new Point[i];
Хе! Так-то прикольно! Ты заставляешь указывать указатели
curvePnt0, curvePnt1, curvePnt2
указывать на абсолютно другие участки памяти с абсолютно другим количеством элементов- а именно i! (а не 31)

Вывод: Вот не по фиг на что и на сколько указывают curvePnt0, curvePnt1, curvePnt2 вначале. Главное, чтобы компилилось. Я бы попробовал так всю ту бодягу, которая закомментирована
заменить на
C++
1
2
array<Point>^ curvePnt0={Point(50,50)};array<Point>^ curvePnt1{Point(50,50) };
array<Point>^ curvePnt2={Point(50,50)}
Ибо, повторяю через несколько строчек кода, всё это поменяется и это абсолютно неважно, один элемент или 30. ПРобуй.
1
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
26.04.2011, 00:16  [ТС] 18
Цитата Сообщение от ForEveR Посмотреть сообщение
Olchik, Студент и должен сам изучать программирование...
а я и не спорю, но смысл тогда учиться очно, если можно все самим выучить (у нас, кстати, дневного нет).
вобщем, я предлагаю закрыть обсуждение того, что должен и не должен студент и преподаватель, т к эта тема вечная, как мир.
то, что в си я ламер еще тот, и так сразу понятно. мне в общем-то, надо сдать задачу эту, вот и всё (остальные я сдала уже). я думаю, что если в будущем будет необходимость, я смогу освоить си (не за 2 месяца, конечно же). а вы (форумчане), надеюсь, мне сможете в этом помочь

Добавлено через 6 минут
код
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
System::Drawing::Graphics ^myGr;
        int f,t,i,y;
        int n;
        double min;
 
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 float mC_B0[100][2], mC_B1[100][2], mC_B2[100][2];
                 n=30;
        
            
                array<Point>^ curvePnt0={Point(50,50)};array<Point>^ curvePnt1{Point(50,50) };
                array<Point>^ curvePnt2={Point(50,50)}
                 i=0;
        
 
          System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8 );
          SolidBrush^ drawBrush = gcnew SolidBrush( Color::White );
          Pen^ whitePen = gcnew Pen( Color::White,0.1f );
              
          pictureBox1->Refresh();
 
 
          TimeSpan f_span_format=dateTimePicker2->Value-dateTimePicker1->Value;
                        f=f_span_format.Days;
 
             System::DateTime day = this->dateTimePicker2->Value;
             String^ drawString = System::Convert::ToString(day);
            
         
             t=n;
             i=0;
             while (i<=t) {
               i=System::Convert::ToDouble(i);  
               mC_B0[i][0]=i;
               mC_B1[i][0]=i;
               mC_B2[i][0]=i;
               mC_B0[i][1]=(sin(2*PI*(i-f)/Fiz_P))*100;
               mC_B1[i][1]=(sin(2*PI*(i-f)/Int_P))*100;
               mC_B2[i][1]=(sin(2*PI*(i-f)/Emo_P))*100;
            
 
               curvePnt0[i] = Point((mC_B0[i][0]),mC_B0[i][1]);
               curvePnt1[i] = Point((mC_B1[i][0]),mC_B1[i][1]);
               curvePnt2[i] = Point((mC_B2[i][0]),mC_B2[i][1]);
              
               
               i=i+1;
               }
             Pen^ redPen = gcnew Pen( Color::Red,3.0f );
             Pen^ greenPen = gcnew Pen( Color::Green,3.0f );
             Pen^ bluePen = gcnew Pen( Color::Blue,3.0f );
               myGr->DrawCurve(greenPen,curvePnt0);
               myGr->DrawCurve(bluePen,curvePnt1);
               myGr->DrawCurve(redPen,curvePnt2);
               
              
             }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 myGr=pictureBox1->CreateGraphics();
             }
    };
ругается
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
1> error C2601: 'curvePnt1' : local function definitions are illegal
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(159) : error C2143: syntax error : missing ';' before '}'
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(160) : error C3145: 'curvePnt2' : global or static variable may not have managed type 'cli::array<Type> ^'
1>        with
1>        [
1>            Type=System::Drawing::Point
1>        ]
1>        may not declare a global or static variable, or a member of a native type that refers to objects in the gc heap
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(161) : error C2146: syntax error : missing ';' before identifier 'i'
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(161) : error C2065: 'i' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(164) : error C3145: 'drawFont' : global or static variable may not have managed type 'System::Drawing::Font ^'
1>        may not declare a global or static variable, or a member of a native type that refers to objects in the gc heap
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(165) : error C3145: 'drawBrush' : global or static variable may not have managed type 'System::Drawing::SolidBrush ^'
1>        may not declare a global or static variable, or a member of a native type that refers to objects in the gc heap
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(166) : error C3145: 'whitePen' : global or static variable may not have managed type 'System::Drawing::Pen ^'
1>        may not declare a global or static variable, or a member of a native type that refers to objects in the gc heap
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(168) : error C2065: 'pictureBox1' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(168) : error C2227: left of '->Refresh' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(171) : error C2065: 'dateTimePicker2' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(171) : error C2227: left of '->Value' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(171) : error C2065: 'dateTimePicker1' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(171) : error C2227: left of '->Value' must point to class/struct/union/generic type
1>        type is ''unknown-type''
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(172) : error C2065: 'f' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(174) : error C3145: 'day' : global or static variable may not have managed type 'System::DateTime'
1>        only simple value types are allowed
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(174) : error C2355: 'this' : can only be referenced inside non-static member functions
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(174) : error C2227: left of '->dateTimePicker2' must point to class/struct/union/generic type
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(174) : error C2227: left of '->Value' must point to class/struct/union/generic type
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(175) : error C3145: 'drawString' : global or static variable may not have managed type 'System::String ^'
1>        may not declare a global or static variable, or a member of a native type that refers to objects in the gc heap
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(178) : error C2065: 't' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(178) : error C2065: 'n' : undeclared identifier
1>c:\users\олечка\documents\visual studio 2005\projects\3_third\3_third\Form1.h(180) : fatal error C1903: unable to recover from previous error(s); stopping compilation
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
26.04.2011, 00:18 19
Так, скинь весь проект, который компилится.
0
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
26.04.2011, 00:19  [ТС] 20
точку с запятой поставила, но все равно ругается
0
26.04.2011, 00:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2011, 00:19
Помогаю со студенческими работами здесь

Заполнить массив точек для построения графика
Мне нужно нарисовать график зависимости. Есть DrawCurve, которая &quot;строит кривую через точки...

Невозможно преобразовать параметр 1 из 'System::Drawing::Point ^' в 'System::Drawing::Point
oldCursorPosition = gcnew Point(e-&gt;X, e-&gt;Y); // Устанавливаем флаг на Да ...

Алгоритм поиска 2-х ближайших точек из массива элементов Point [] points к заданной точке Point p.
Кто может, напишите хотя бы один алгоритм, пожалуйста. Алгоритм поиска 2-х ближайших точек из...

Класс "Динамический массив точек", в котором лежит класс Point
Такое вот условаие. Не могу понять что от меня хотят. Может кто или обьяснить или дать пример...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru