/* Программа с использованием цикла с параметром */
#include <stdlib.h>
#include <stdio.h> /* директивы */
#include <math.h> /* препроцессора */
#include <conio.h>
main() /* заголовок основной функции */
{
float c[7], /* массив значений стоимостей кладов */
p[7], /* массив значений начисленных премий */
pro; /* процент вознаграждения */
int n, i, /* размер массивов (количество кладов), параметр цикла */
d, t; /* переменные, определяющие печать на принтер и повторение */
do /* начало цикла для повторения вычислений */
{
clrscr(); /* очистка экрана */
printf("Вывод на печать – 1, \n"
"иначе – другая цифра: "); /* вывод запроса */
scanf("%d", &d); /* ввод значения переменной, определяющей печать на принтер (ответ на запрос) */
printf("Введите размер массива (от 1 до 7): ");
scanf("%d", &n); /* ввод размера массивов */
for( i=0 ; i < n ; i++ ) /* заголовок цикла ввода исходного массива (массив стоимостей кладов) */
{
printf("Введите значение стоимости клада "
"c(%d), тыс. р.: ", i+1);
scanf("%f", &c[i]); /* ввод значения элемента массива */
}
printf("Введите размер вознаграждения, проц. : ");
scanf("%f", &pro); /* ввод значения процента вознаграждения */
/* вывод процента вознаграждения и шапки таблицы на экран */
printf("\n Размер вознаграждения....: %.1f проц. \n", pro);
printf(" +––––––––––––+–––––––––––+\n"
" | Стоимость | Премия |\n"
" | клада c(i) | п(i) |\n"
" +––––––––––––+–––––––––––+\n");
if( d == 1 ) /* проверка условия вывода на принтер */
{
/* вывод процента вознаграждения и шапки таблицы на принтер */
fprintf(stdprn,"\n Размер вознаграждения: "
"%.1f проц. \n", pro);
fprintf(stdprn," +––––––––––––+–––––––––––+\n"
" | Стоимость | Премия |\n"
" | клада c(i) | п(i) |\n"
" +––––––––––––+–––––––––––+\n");
}
for( i=0 ; i < n ; i++ ) /* заголовок цикла вычисления значения функции (расчет премий) */
{
p[ i ] = ( c[ i ] * pro ) / 100.; /* вычисление текущего значения */
/* вывод текущих значений элементов массивов на экран */
printf(" | %7.2f | %8.3f |\n", c[ i ], p[ i ]);
if( d == 1 ) /* проверка условия вывода на принтер */
{
/* вывод текущих значений элементов массивов на принтер */
fprintf(stdprn," | %7.2f | %8.3f |\n"
, c[ i ], p[ i ]);
}
}
printf(" +––––––––––––+–––––––––––+\n");
if( d == 1 ) /* проверка условия вывода на принтер */
{
fprintf(stdprn, " +––––––––––––+–––––––––––+\n");
}
printf("Повторение решения – 1, \n"
"выход – другая цифра: "); /* вывод запроса */
scanf("%d", &t); /* ввод значения переменной, определяющей повторение вычислений (ответ на запрос) */
}while( t==1 ); /* окончание цикла, организующего повторение */
} /* завершающая скобка головной функции */
Численные значения вводимых данных не показаны.
Принципы улучшения дружественности, используемые в программе, являются универсальными и пригодны для алгоритмов и программ любых видов и типов.