
- •Технология программирования циклических процессов. Арифметические циклы
- •Арифметические циклы с аналитическим заданием аргумента
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма
- •Программирование задачи
- •Операторы цикла
- •Оператор цикла с предусловием
- •Правила записи и выполнения
- •Оператор цикла с постусловием
- •Структура оператора
- •Правила записи и выполнения
- •Оператор пошагового цикла for
- •Структура оператора
- •Правила записи и выполнения
- •Программа по алгоритму цикла с предусловием
- •Программа по алгоритму цикла с постусловием
- •Программа по алгоритму цикла с параметром
- •Арифметические циклы с табличным заданием аргумента
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Алгоритмизация структурой цикла с предусловием
- •Алгоритмизация структурой цикла с постусловием
- •Алгоритмизация структурой цикла с параметром
- •Программирование задачи
- •Программирование задачи
- •Программа по алгоритму цикла с предусловием
- •Программа по алгоритму цикла с постусловием
- •Программа по алгоритму цикла с параметром
- •Заключение
- •Вопросы для контроля
Программа по алгоритму цикла с предусловием
Анализ алгоритмов, выполненных в виде цикла с предусловием (рис. 5.4, 5.7а) и структур операторов цикла, позволяет сделать вывод, что программирование возможно только с while. Вариант программы имеет вид:
/*Задача 5.1. Программа цикла с предусловием. */
/* Составил студент гр. А033 Бушуев И.А.*/
#include <stdio.h>
#include <stdlib.h> /* директивы */
#include <math.h> /* препроцессора */
main() /* заголовок основной функции */
{
float zn,zi,zk,dz,pn,nali;/*описание вещественных переменных*/
int n; /* описание целой переменной */
scanf("%5f%5f%4f%3f",&zn,&zk,&dz,&pn);/*ввод переменных*/
printf(" zn=%7.2f zk=%7.2f dz=%6.2f pn=%5.2f\n",zn,zk,dz,pn);
zi=zn; /* формирование начального значения параметра цикла*/
while( zi<=zk ) /* заголовок цикла */
{
nali=(zi*pn)/100.; /*вычисление текущего значения налога */
printf(" %10.2f %10.2f\n",zi,nali); /* печать zi, nali */
zi=zi+dz;/*вычисление текущего значения параметра цикла */
}
n=(zk-zn)/dz+1; /* оператор, следующий за циклом */
printf(" N=%2d\n",n);
}
2842.5500.300.13.
Под телом программы расположена строка численных значений вводимых переменных.
Результаты решения представлены в приложении 5.1.
Программа по алгоритму цикла с постусловием
Анализ алгоритмов, выполненных в виде цикла с постусловием (рис. 5.5, 5.7б) и структур операторов цикла, позволяет сделать вывод, что программирование возможно только с do ... while. Вариант программы имеет вид:
/*Задача 5.1. Программа цикла с постусловием. */
/* Составил студент гр. А033 Бушуев И.А.*/
#include <stdio.h>
#include <stdlib.h> /* директивы */
#include <math.h> /* препроцессора */
main() /* заголовок основной функции */
{
float zn,zi,zk,dz,pn,nali; /*описание вещественных переменных*/
int n; /* описание целой переменной */
scanf("%5f%5f%4f%3f",&zn,&zk,&dz,&pn);/*ввод переменных*/
printf(" zn=%7.2f zk=%7.2f dz=%6.2f pn=%5.2f\n",zn,zk,dz,pn);
zi=zn; /* формирование начального значения параметра цикла */
do /* начало цикла */
{
nali=(zi*pn)/100.; /* вычисление текущего значения налога*/
printf(" %10.2f %10.2f\n",zi,nali); /* печать zi, nali */
zi=zi+dz; /*вычисление текущего значения параметра цикла*/
}
while( zi<=zk ); /* проверка условия повторения цикла */
n=(zk-zn)/dz+1; /* оператор, следующий за циклом */
printf(" N=%2d\n",n);
}
2842.5500.300.13.
Под телом программы расположена строка численных значений вводимых переменных.
Результаты решения представлены в приложении 5.2.
Программа по алгоритму цикла с параметром
Анализ алгоритмов, выполненных в виде цикла с параметром (рис. 5.6, 5.7в) и структур операторов цикла, позволяет сделать вывод, что программирование возможно только с for. Вариант программы имеет вид:
/*Задача 5.1. Программа с использованием пошагового цикла */
/* Составил студент гр. А033 Бушуев И.А.*/
#include <stdio.h>
#include <stdlib.h> /* директивы */
#include <math.h> /* препроцессора */
main() /* заголовок основной функции */
{
float zn,zi,zk,dz,pn,nali;/*описание вещественных переменных*/
int n; /* описание целой переменной */
scanf("%5f%5f%4f%3f",&zn,&zk,&dz,&pn);/*ввод переменных*/
printf(" zn=%7.2f zk=%7.2f dz=%6.2f pn=%5.2f\n",zn,zk,dz,pn);
for(zi=zn;zi<=zk;zi=zi+dz) /* заголовок цикла */
{
nali=(zi*pn)/100.; /* тело */
printf(" %10.2f %10.2f\n",zi,nali); /* печать zi, nali */
}
n=(zk-zn)/dz+1; /* оператор, следующий за циклом */
printf(" N=%2d\n",n);
}
2842.5500.300.13.
Под телом программы расположена строка численных значений вводимых переменных.
Результаты решения представлены в приложении 5.3.