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

Математическая формулировка и выбранный метод решения позволяют запланировать следующие действия:

· обнуление будущих одномерных массивов SКолi и SМi;

· создание основного цикла ввода элементов Кil и расчета SКолi, ввода элементов Мij и расчета SМi (параллельно вложенными циклами);

· создание циклов вывода исходных матриц Кil и Мij и полученных одномерных массивов SКолi и SМi.

Схема алгоритма выполнена в один шаг (рис. 9.8).

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

Планируемая алгоритмом методика вывода результатов позволяет организовать вывод исходных данных в форме двумерных массивов (количеств Kil и масс Mij изделий), а результаты решения – в виде одномерных массивов (суммарные количества Sколi и массы SMi изделий по каждому магазину).

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

Таблица 9.3

Имя в алгоритме N T P i j l Kil Mij i Sколi
Имя в программе n t p i j l k[i][l] m[i][j] sm[i] skol[i]

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

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

#include <stdio.h> /* директивы */

#include <conio.h> /* препроцессора */

#include <math.h>

Рис. 9.8. Схема алгоритма решения задачи 9.3

#include <windows.h>

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

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

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

main( ) /* заголовок головной функции */

{

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

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

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

clrscr( );

CharToOem(" Введите число магазинов N ",buf); /* запрос */

printf("\n %s (N<=%d):",buf,N); /* и */

scanf("%d", &n); /* ввод */

CharToOem("Введите максим. ассортимент хлебных изделий", buf); /* запрос */

printf("\n %s (T<=%d):",buf,T); /* и */

scanf("%d", &t); /* ввод */

CharToOem("Введите максим. ассортимент конд. изделий", buf); /* запрос */

printf("\n %s (P<=%d):",buf,P); /* и */

scanf("%d", &p); /*ввод*/

printf("\n N=%d P=%d T=%d ", n, p, t);

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

{

sm[i]=0.;

skol[i]=0;

}

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

{

CharToOem("Введите данные для магазина № ",buf);

printf("\n %s %d:",buf,i+1);

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

хлебного изделия*/

{

CharToOem("Введите текущее количество хлебного изделия"

" (наим.",buf);

printf("\n %s %d)(%d,%d):",buf,l+1,i+1,l+1);

scanf("%f", & k[i][l]);

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

}

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

кондитерского изделия*/

{

CharToOem("Введите текущую массу конд. "

" изделия (наим.",buf);

printf("\n %s %d) (%d,%d):",buf,j+1,i+1,j+1);

scanf("%f", & m[i][j]);

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

}

}

CharToOem("Масса кондитерских изделий ",buf);

printf("\n %s \n",buf);

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

вывода m[i][j] */

{

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

вывода m[i][j]*/

printf(" %5.2f", m[i][j]);

printf("\n");

}

CharToOem("Количество хлебных изделий ",buf);

printf("\n %s \n",buf);

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

вывода k[i][j] */

{

for( l = 0 ; l < t ; l++ ) /*заголовок внутреннего

цикла вывода k[i][j] */

printf(" %3d", k[i][l]);

printf("\n");

}

CharToOem("Суммарное количество хлебных изделий"

" по каждому магазину",buf);

printf("\n %s \n",buf);

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

{

printf(" %d \n", skol[i]);

}

CharToOem("Суммарная масса кондитерских изделий"

" по каждому магазину",buf);

printf("\n %s \n",buf);

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

{

printf(" %5.2f \n", sm[i]);

}

getch( );

}

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

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

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

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

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

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

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