PDA

Просмотр полной версии : Visual c++, массивы



Zazeek
17.02.2009, 23:50
Прошу о помощи
Задание: " вычислить максимальный элемент и поменять его местами с последним"
Ниже код. Нужна такая же, только с использованием функции. (массив из 18 вещественных чисел)

Код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a[18];int i,max=0,imax;
for(i=0;i<18;i++)a[i]=StrToFloat(Memo1->Lines->Strings[i]);
max=a[0];imax=0;
for(i=1;i<18;i++)
if(a[i]>max){max=a[i];imax=i;}
a[imax]=a[17];
a[17]=max;
Memo2->Clear();
for(i=0;i<18;i++)Memo2->Lines->Add(FloatToStr(a[i]));
}

Заранее спасибо!

atavin-ta
18.02.2009, 10:09
У тебя уже функция. В данном случае - обработчик события. Поменяй заголовок и разнеси декларации.

void Swap(float *a);
{
int i,max=0,imax;
max=a[0];imax=0;
for(i=1;i<18;i++)
if(a[i]>max){max=a[i];imax=i;}
a[imax]=a[17];
a[17]=max;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a[18];
int i;
for(i=0;i<18;i++)a[i]=StrToFloat(Memo1->Lines->Strings[i]);
Swap(a);
Memo2->Clear();
for(i=0;i<18;i++)Memo2->Lines->Add(FloatToStr(a[i]));
}

Если тебе нужны 4 функции:
1. обработчик,
2. заполнение массива,
3. поиск максимума и перестановкой
4. вывод массива,
то делай по аналогии. Обработчик в этом случае должен хранить сам массив и последовательно вызывать остальные функции. Каждая функция должна хранить в локальных данных ту инфу, которая нужна для её подзадачи. И максимальный элемент не вычисляется, а ищется.

Zazeek
20.02.2009, 23:42
atavin-ta, Благадарю.