![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры. Пример 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]); /*вывод полученного массива */ }
|