Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры. Пример 2.1 В массиве a поменять местами элементы: первый со вторым, третий с четвертым и т.д






Пример 2.1 В массиве a поменять местами элементы: первый со вторым, третий с четвертым и т.д. Оформить этот алгоритм в виде функции reverse.

Саму функцию оформить в виде отдельного файла. В этом случае выполняется его включение процедурой #include.

Если в качестве аргумента функции используется имя массива, то ей передается адрес начала массива, а сами элементы не копируются. Функция может изменять элементы массива, сдвигаясь (индексированием) от его начала.

Текст программы

#include < vcl.h>

#pragma hdrstop

#include " Unit1.h"

 

#define SZ 6 /*размер массива*/

#include " reverse.cpp" /*включение файла reverse.cpp с функцией reverse */

extern void reverse(int s[SZ]); /*включение протипа функции*/

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource " *.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1:: TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1:: Button1Click(TObject *Sender)

{

int i, a[SZ]; /* описание переменной i и массива а целого типа */

StringGrid1-> SetFocus(); /*передача фокуса*/

for (i=0; i< SZ; i++)

a[i]=StrToInt(StringGrid1-> Cells[i][0]); /*ввод исходного массива*/

reverse(a); /*обращение к функции reverse*/

for (i=0; i< SZ; i++)

StringGrid2-> Cells[i][0]=IntToStr(a[i]); /*вывод полученного массива */

 

}

/*Текст файла reverse.cpp с функцией reverse, хранящийся отдельно*/

void reverse(int s[SZ])

{

int x, i;

for (i=0; i< =SZ; i+=2)

{x=s[i]; s[i]=s[i+1]; s[i+1]=x; } /*обмен элементов местами*/

}

Результаты вычислений приведены на рисунке 30.

Рисунок 30. Результаты вычислений

 

В предыдущем примере функция хранилась в виде отдельного файла и включалась процедурой #include. Функция может быть включена в один файл с вызывающей программой. В этом случае процедура #include не требуется, а сама функция должна быть объявлена в основной программе, если она имеет не целый тип. Т.е. для предыдущего примера программа будет выглядить так:

//---------------------------------------------------------------------------

 

#include < vcl.h>

#pragma hdrstop

#include " Unit1.h"

 

#define SZ 6 /*размер массива*/

void reverse(int s[SZ]); /*включение протипа функции*/

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource " *.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1:: TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void reverse(int s[SZ])

{

int x, i;

for (i=0; i< =SZ; i+=2)

{x=s[i]; s[i]=s[i+1]; s[i+1]=x; } /*обмен элементов местами*/

}

 

void __fastcall TForm1:: Button1Click(TObject *Sender)

{

int i, a[SZ]; /* описание переменной i и массива s целого типа */

StringGrid1-> SetFocus();

for (i=0; i< SZ; i++)

a[i]=StrToInt(StringGrid1-> Cells[i][0]);

reverse(a); /*обращение к функции reverse*/

for (i=0; i< SZ; i++)

StringGrid2-> Cells[i][0]=IntToStr(a[i]); /*вывод полученного массива */

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.