Составление алгоритма решения. Сформированная математическая модель и выбранный метод решения позволяют выполнить одношаговую схему алгоритма (рис

Сформированная математическая модель и выбранный метод решения позволяют выполнить одношаговую схему алгоритма (рис. 8.10). Ввод значений коэффициентов перевода временных отрезков и поясняющих строк заменен предварительной процедурой инициализации их значений (для использования программного аналога – определения значений элементов массива одновременно с его описанием).

Рис. 8.10. Алгоритм решения задачи 8.6

Предлагаемый вариант определения значений массива символьных строк облегчает создание программного фрагмента (замена специальных функций по работе с символьными строками на «чистый» оператор присваивания в описателе массива).

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

Программирование задачи

Идентификация переменных представлена в табл. 8.6

Таблица 8.6

Обозначение в алгоритме i КВ Ki ВРi
Обозначение в программе i kv k[i] vr[i]

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

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

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

#include<conio.h>

main()

{

float kv; /* описание */

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

int k[4]={60,24,7,52}; /*инициализация массива K*/

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

char vr[4][50]={"количество часов", /*инициализация*/

"количество суток", /*символьного*/

"количество недель", /*массива*/

"количество лет"}; /* VR*/

clrscr();

CharToOem(" Введите временной отрезок в минутах: ",buf);

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

scanf("%f", &kv); /* начального значения времени*/

printf("\n -------------------------------------"

"\n | i | vr | kv |"

"\n -------------------------------------");

for (i=0; i< 4; i++)/* заголовок цикла расчёта и вывода */

{

kv=kv/k[i];

CharToOem(vr[i],buf);

printf("\n | %2d |%21s|%7.1f|", i+1, buf, kv); /* вывод */

}

printf("\n -------------------------------------");

getch();

}

1200000.

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

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

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

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

EditKv
ListBoxKv

 

Для ввода исходного временного отрезка планируем однострочное поле редактирования (EditKv). Вывод расчетных значений временных отрезков с поясняющими надписями реализуем в поле-список (ListBoxKv).

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

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

#include<stdio.h>

#include<stdlib.h>

void TVrDlgClient::BNClickedOk()

{

// INSERT>> Your code here.

float kv; /* описание */

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

int k[4]={60,24,7,52}; /*инициализация массива K*/

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

char vr[4][50]={"количество часов", /*инициализация*/

"количество суток", /*символьного*/

"количество недель", /*массива*/

"количество лет"}; /* VR*/

ListBoxKv->ClearList();

EditKv->GetText(buf,10); /* ввод*/

kv=atof(buf); /* исходного значения времени*/

for (i=0; i< 4; i++)/* заголовок цикла расчёта и вывода */

{

kv=kv/k[i];

sprintf(buf," % 3d %s %5.2f", i+1, vr[i], kv);

ListBoxKv->AddString(buf); /* вывод расчетного времени*/

}

}

1200000.

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

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