Консультация № 109077
12.11.2007, 16:20
0.00 руб.
0 1 1
Здавствуйте, подскажите новичку. Как создать функцию в С++. Текст программы прилагается, он строить график типа Bar. Хочу создать из этой программы фукцию с входными параметрами:
float pdk[3][21]={{4,15,19,20,58,26,25,27,29,37,34,2,35,32,40,43,46,45,49,51,54},{5,16,20,21,59,27,26,28,30,38,35,3,36,33,41,44,47,46,50,56,55},{6,17,21,22,60,28,27,29,31,39,36,4,37,34,42,45,48,47,51,57,56}};
int r=0;
int N=21;
И полуать из функции значения:
float dmax, float dmin, float d[6].
Заранее спасибо! Можете привести какой-то свой пример, который возвращает несколько значений. Я догадалась как написать заголовок:
float graf(float pdk[3][21], int r, int N) {
}
а как вернуть несколько значений? и как постоить график в фукции, выводиться ошибка в строках :
Series1->Clear();
for (i=0; i<6; i++) {
Series1->AddY(d[i],(String)(d[i]), clTeeColor);
}

Приложение:
float pdk[3][21]={{4,15,19,20,58,26,25,27,29,37,34,2,35,32,40,43,46,45,49,51,54},{5,16,20,21,59,27,26,28,30,38,35,3,36,33,41,44,47,46,50,56,55},{6,17,21,22,60,28,27,29,31,39,36,4,37,34,42,45,48,47,51,57,56}};int r=0;int i,j;float dmax=pdk[0][0];float dmin=pdk[0][0];float k,w;int d[6]={0};int N=21;for (i=0; i<N; i++) { if (pdk[r][i]>dmax) {dmax=pdk[r][i];} if (pdk[r][i]<dmin) {dmin=pdk[r][i];}}Label1->Caption=FloatToStr(dmax);Label2->Caption=FloatToStr(dmin);k=ceil(sqrt(N)); //êîë-âî ó÷àñòêîâw=(dmax-dmin)/k; //äèàïàçîí ãðóïïûfloat z=0;for (j=0; j<k+1; j++) { d[j]=0; for (i=0; i<N; i++) { if (pdk[r][i]>z&&pdk[r][i]<=(z+w)) {d[j]++;} } z+=w;}Series1->Clear();for (i=0; i<6; i++) { Series1->AddY(d[i],(String)(d[i]), clTeeColor);}

Обсуждение

Неизвестный
17.11.2007, 11:31
общий
это ответ
Здравствуйте, Mart!

Задача не совсем понятна, потому отвечу не на все вопросы:

Есть несколько методов возвратить несколько значений из функции.
Самый предпочтительный через задание параметров как ссылок или указателей:

void graf(float pdk[3][21], int r, int N, float& dmax, float &dmin, float *d)
{
//Внутри функции работаете с такими параметрами как с обычными переменными
dmax=pdk[0][0];
dmin=pdk[0][0];
}
Для вызова фукнции делаете следующее

float dmax, dmin, d[6];
graf(pdk, r, N, dmax, dmin, d);

Другие методы: завести структуру

struct graf_result
{
float dmax, dmin, d[6];
};

Теперь можно либо передавать адрес структуры в функцию через указатель или ссылку:

void graf(float pdk[3][21], int r, int N, graf_result *d); или
void graf(float pdk[3][21], int r, int N, graf_result& d);

Наконец, можете возвращать эту структуру:

graf_result graf(float pdk[3][21], int r, int N);

К сожалению Вывод графика это гораздо более трудоёмкая задача и из Вашего вопроса не ясно с какой программной средой Вы работаете и в какой компонент Вы собираетесь осуществлять вывод.
Форма ответа