powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с отрисовкой
4 сообщений из 4, страница 1 из 1
проблема с отрисовкой
    #38016032
spyker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет=)
вообщем делаю задачку и возникла проблема с функцией поиска минимального и максимального элемента в векторе, точнее с ее вызовом в методе рисования:

вот это сама функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
void Cfunc_vectorDlg::zoom(vector <double> A)
{
	float max=A[0];
	double min=A[0];
	for(int i=0;i<A.size();i++)
	{
		if(max<A[i]) max=A[i];
	}
	for(int i=0;i<A.size();i++)
	{
		if(min>A[i]) min=A[i];
	}
	if(max>y_max)
	{
		y_max=max;
		y_min=-max;
	}
	if(min<y_min)
	{
		y_max=max;
		y_min=min;
	}
	UpdateData(false);
}



вот так я ее вызываю в функции рисовании:
Код: plaintext
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.
void Cfunc_vectorDlg::function(CDC *pDC, CRect rect, vector <double> A)
{

	zoom(A);
	xCenter=(int)(rect.Width()+10);
	yCenter=(int)(rect.Height()-20);

	int xScale=xCenter/((b-a));
	int yScale=yCenter/((y_max-y_min));

	int xstart=a*xScale+10;
	int ystart=y_max*yScale+10;
	//b=nn/Fd;
	double xj=0;
	double step=1/Fd;
	//рис график
	CPen pen,*oldpen;
	pen.CreatePen(PS_SOLID,1,RGB(0,0,255));
	///pDC->Rectangle(&rect);
	oldpen=pDC->SelectObject(&pen);

	pDC->MoveTo(28+(int)(xj*(xCenter/(nn/Fd))),(int)(-A[0]*yScale)+ystart+50/*+(int)((m-A[0])*yScale)*/);

	for(int i=0;i<nn;i++)
	{
		xj=xj+step;
		pDC->LineTo(28+(int)(xj*(xCenter/(nn/Fd))),(int)(-A[i]*yScale)+ystart+50/*+(int)((m-A[i])*yScale)*/);
	}

	pen.DeleteObject();

}



по сути дела, найдя максимальные и минимальные он мне должен нарисовать после увеличения функцию во всю область

а он так же мне и рисует

в чем проблема?
...
Рейтинг: 0 / 0
проблема с отрисовкой
    #38016081
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spyker,
1) Предавать вектор в качестве параметра - очень нехорошо. Перадавай как константную ссылку.
2) искать мин и макс значения можно быстрее. Процентов на 25%
3) Почему max float?

Вот тут что-то странное. В первом IF да раза max, во втором max и мин.

авторif(max>y_max)
{
y_max=max;
y_min=-max;
}
if(min<y_min)
{
y_max=max;
y_min=min;
}
...
Рейтинг: 0 / 0
проблема с отрисовкой
    #38016087
spyker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vromanov,
1.мне кажется тут не имеет значения, но сменил на double
2.как искать на 25% быстрее
3.и как передать в виде константы
...
Рейтинг: 0 / 0
проблема с отрисовкой
    #38016094
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spyker,

Передавать так: void Cfunc_vectorDlg::zoom(const vector <double>& A)
искать быстрее можно так: рабить веткор на пары. ПОтом сравнить значения в паре между собой. Потом большее с макс и меньшее с мин. Итого три сравнения на 2 элемента вместо 4 сравнений.

float вместо double это просто помарка, которая выдает начинающего программиста.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с отрисовкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]