Консультация № 188783
05.02.2016, 00:53
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:
Надо преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. Сделать это нужно с помощью функции. Код прилагается. (Написан в Borland C++ Builder 6) Заранее спасибо.
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
randomize;
for (int i=0;i<=10;i++)
{
StringGrid1->Cells[i][0]=IntToStr(random(20)-10);
}
}
//---------------------------------------------------------------------------

int sum(int* mas)
{
int s=0;
for (int i=0;i<10;i++)
{
if(*mas>0)
s=s+*mas;
mas++;
}
return s;
}

int max(int* mas)
{
int m=0;
for(int i=0;i<10;i++)
{
if(abs(mas[i])>m)
m=abs(mas[i]);
}
return m;
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
int a[10];
for (int i=0;i<10;i++)
{
a[i]=StrToInt(StringGrid1->Cells[i][0]);
}
Edit1->Text=IntToStr(max(a));
Edit2->Text=IntToStr(sum(a));
}
//---------------------------------------------------------------------------

Обсуждение

давно
Посетитель
7438
7205
05.02.2016, 12:28
общий
это ответ
Здравствуйте, kuroi_yuki_96!
Можно сделать, например, так.
Код:

int * sort(int * mas)
{
int temp;

for(int i=0; i<10; i++)
{
if (mas[i]==0)
{
for(int j=i+1; j<10; j++)
{
if (mas[j]!=0)
{
temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
break;
}
}
}
}
return(mas);
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа