
- •Технология программирования вложенных циклов
- •Правила работы с вложенными циклами:
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Описание многомерных массивов
- •Обозначение элементов многомерного массива
- •Создание двумерного массива
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Параллельно вложенные циклы
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программирование задачи с графическим интерфейсом
- •Сортировка элементов массивов
- •Ранжирование числовых массивов
- •Ранжирование по убыванию основным методом
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование по возрастанию методом «пузырька»
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование символьных массивов
- •Ранжирование символов в строке по алфавиту
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ранжирование массива символьных строк по алфавиту
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
-
Программирование задачи
Таблица идентификации переменных алгоритма и создаваемой программы представлена в табл. 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.