Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интегрирование Глава 9.doc
Скачиваний:
2
Добавлен:
12.11.2018
Размер:
1.49 Mб
Скачать
            1. Программирование задачи

Таблица идентификации переменных алгоритма и создаваемой программы представлена в табл. 9.4.

Таблица 9.4

Имя в алгоритме

n

i

j

xmax

xj

xi

xnmax

nmax

Имя в программе

n

i

j

xmax

x[j]

x[i]

x[nmax]

nmax

На основании схема алгоритма и таблицы идентификации составим программы решения задачи.

Классический вариант программирования задачи

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

#include<conio.h>

main()

{

int x[30], xmax; /* описание */

int i, j, n, nmax; /* локальных переменных */

char buf[50]; /*описание символьного массива*/

clrscr();

CharToOem("Введите количество элементов массива", buf);

printf("\n %s \n",buf); /* ввод*/

scanf("%d", &n);

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

{

CharToOem(" Введите элемент x ",buf);

printf("\n %s[%d] \n",buf,i+1); /* ввод*/

scanf("%d", &x[i]);

}

CharToOem(" \n\n Исходный массив X \n\n",buf);

printf("%s",buf);

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

printf(" %5d ",x[i]);

for (i = 0; i < n ; i++)/*заголовок внешн. цикла сортировки*/

{

xmax = x[i];

nmax = i;

for(j = i+1; j < n; j++) /*загол. внутр. цикла сортировки*/

{

if(x[j] > xmax)

{

xmax = x[j];

nmax = j;

}

}

x[nmax] = x[i];

x[i]=xmax;

}

CharToOem(" \n Отсортированный массив Х \n",buf);

printf("%s",buf);

for(i=0;i<n;i++) printf(" %5d ",x[i]);

getch();

}

7 – размер массива;

1 6 4 8 2 11 4 – элементы массива;

Под закрывающей скобкой приведены исходные данные для решения задачи.

Результаты решения представлены в приложении 9.7.

Программирование задачи с графическим интерфейсом

Программирование задачи при использовании графического интерфейса предварим его разработкой.

ListBoxХ

Для ввода количества элементов массива планируем однострочное поле редактирования (EditN). Для ввода элементов массива Х – многострочное поле редактирования (EditХ). Вывод элементов отсортированного массива X реализуем в поле-список (ListBoxX).

Управление процессом решения реализуем двумя командными кнопками, расположенными в нижней части окна. Назначение каждой определяется ее названием.

С учетом планируемого интерфейса выполним программирование задачи.

#include<stdio.h>

#include<stdlib.h>

void TVrDlgClient::BNClickedOk()

{

// INSERT>> Your code here.

int x[30], xmax; /* описание */

int i, j, n, nmax; /* локальных переменных */

char buf[50]; /*описание символьного массива*/

ListBoxX->ClearList();

EditN->GetText(buf,10);/*Ввод размера*/

n=atoi(buf); /*массива */

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

{

EditX->GetLine(buf,10,i); /* ввод*/

x[i]=atoi(buf); /* текущего элемента массива*/

}

for (i = 0; i < n ; i++)/*заголовок внешн. цикла сортировки*/

{

xmax = x[i];

nmax = i;

for(j = i+1 ; j < n ; j++) /*загол. внутр. цикла сортировки*/

{

if(x[j] > xmax)

{

xmax = x[j];

nmax = j;

}

}

x[nmax] = x[i];

x[i]=xmax;

}

for (i=0; i< n; i++)/* заголовок цикла вывода */

{

sprintf(buf," %3d",x[i]); /* вывод*/

ListBoxX->AddString(buf); /* элемента массива*/

}

}

7 – размеры массива;

1 6 4 8 2 11 4 – элементы массива;

Под закрывающей скобкой приведены исходные данные для решения задачи.

Результаты решения представлены в приложении 9.8.