Visual c++, массивы

Ответить
Zazeek
Сообщения: 4
Зарегистрирован: 17 фев 2009, 22:31

17 фев 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=StrToFloat(Memo1->Lines->Strings);
max=a[0];imax=0;
for(i=1;i<18;i++)
if(a>max){max=a;imax=i;}
a[imax]=a[17];
a[17]=max;
Memo2->Clear();
for(i=0;i<18;i++)Memo2->Lines->Add(FloatToStr(a));
}

Заранее спасибо!
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

18 фев 2009, 10:09

У тебя уже функция. В данном случае - обработчик события. Поменяй заголовок и разнеси декларации.
[syntax=C]
void Swap(float *a);
{
int i,max=0,imax;
max=a[0];imax=0;
for(i=1;i<18;i++)
if(a>max){max=a;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=StrToFloat(Memo1->Lines->Strings);
Swap(a);
Memo2->Clear();
for(i=0;i<18;i++)Memo2->Lines->Add(FloatToStr(a));
}
[/syntax]
Если тебе нужны 4 функции:
1. обработчик,
2. заполнение массива,
3. поиск максимума и перестановкой
4. вывод массива,
то делай по аналогии. Обработчик в этом случае должен хранить сам массив и последовательно вызывать остальные функции. Каждая функция должна хранить в локальных данных ту инфу, которая нужна для её подзадачи. И максимальный элемент не вычисляется, а ищется.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Zazeek
Сообщения: 4
Зарегистрирован: 17 фев 2009, 22:31

20 фев 2009, 23:42

atavin-ta, Благадарю.
Ответить