Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


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




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

 

ListBoxKil
ListBoxMij

Для ввода числа магазинов, максимального ассортимента хлебных и кондитерских изделий планируем однострочные поля редактирования (EditN, EditT, EditP). Для ввода количества хлебных изделий и массы кондитерских изделий (в ассортименте) для каждого магазина используем многострочные поля редактирования (EditKil, EditMij).

Вывод текущих количеств хлебных изделий и масс кондитерских изделий (в ассортименте) для каждого магазина, суммарного количества хлебных изделий и суммарной массы кондитерских изделий по каждому магазину реализуем в поля-списки (ListBoxKil, ListBoxMij, ListBoxSK, ListBoxSM). Их расположение задаем так, чтобы значения суммарных количеств (масс) располагались правее соответствующих строк с текущими значениями слагаемых.

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

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

#include<stdio.h>

#include<stdlib.h>

#include <string.h>

#define N 20 /* увеличенные */

#define P 30 /* размеры */

#define T 30 /* массивов */

void TSumprDlgClient::Ok()

{

// INSERT>> Your code here.

float m[N][P], sm[N], pk,pm; /* описатели массивов */

int i, j, l, n, t, p,skol[N],k[N][T]; /* и переменных */

char buf[20], buf1[60]=""; /*описание символьного массива*/

ListBoxKil->ClearList();/*очистка поля вывода*/

ListBoxSK->ClearList();/*очистка поля вывода*/

ListBoxMij->ClearList();/*очистка поля вывода*/

ListBoxSM->ClearList();/*очистка поля вывода*/

EditN->GetText(buf, 10); /*ввод количества*/

n = atoi(buf); /* магазинов*/

EditT->GetText(buf, 10); /*ввод макс. ассортим.*/

t = atoi(buf); /* хлебопродуктов*/

EditP->GetText(buf, 10); /*ввод макс. ассортим.*/

p = atoi(buf); /* конд. изделий*/

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

{

sm[i]=0.;

skol[i]=0;

}

for(i = 0; i < n; i++)/* заголовок цикла перебора № магазина*/

{

for(l = 0; l < t; l++)

{

EditKil->GetLine(buf, 20, i*t+l); /* ввод элементов */

k[i][l]=atoi(buf); /* массива K*/

skol[i]= skol[i] +k[i][l];

}

for(j = 0; j < p; j++)

{

EditMij->GetLine(buf, 20, i*p+j); /*ввод элементов*/

m[i][j]=atof(buf); /* массива M*/

sm[i] =sm[i]+ m[i][j];

}

}

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

{

sprintf(buf1," %s "," ");

for(l = 0; l < t; l++) /* внутрен. цикл вывода kij */

{

sprintf(buf," %3d ",k[i][l]); /* вывод текущих */

strcat(buf1, buf); /* склеенных */

}

ListBoxKil->AddString(buf1); /*значений kil*/

}

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

{

sprintf(buf1," %s "," ");

for(j = 0; j < p; j++) /* внутренний цикл вывода mij*/

{

sprintf(buf," %6.2f ",m[i][j]); /* вывод текущих */

strcat(buf1, buf); /* склеенных */

}

ListBoxMij->AddString(buf1); /*значений mij */

}

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

{

sprintf(buf," %3d ",skol[i]); /* вывод текущих*/

ListBoxSK->AddString(buf); /*значений ski*/

}

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

{

sprintf(buf," %6.2f ",sm[i]); /* вывод текущих*/

ListBoxSM->AddString(buf); /*значений smi*/

}

}

2 5 4 – количество магазинов, ассортименты;

125 138 239 212 92 – количества изделий в первый магазин;

83 65 58 42 34 – количества изделий во второй магазин;

25.9 23.2 38.1 15.4 – массы изделий в первый магазин;

56.2 14.8 56.1 17.8 – массы изделий во второй магазин.

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

Описатели вводимых массивов показывают, что количество магазинов максимально может быть равно пятнадцати, а ассортимент включать до десяти наименований. В запросах на ввод текущих значений расстояний и масс и при выводе таблицы результатов индексы магазина и продукта увеличены на единицу. Это позволяет перейти от принятой в Cи/Си++ формы обозначения индексов (от 0) к принятой в математике (от 1).

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





Поделиться с друзьями:


Дата добавления: 2015-11-23; Мы поможем в написании ваших работ!; просмотров: 537 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

2466 - | 2202 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.