Читайте также: |
|
Оглавление
Оглавление
Задание. 2
Краткое описание. 4
Алгоритм работы программы. 5
Блок – схема. 6
Листинг. 7
Скриншот программы. 8
Список литературы. 9
Задание.
Составить программу, которая работает следующим образом: пользователь вводит натуральное число n(n >= 5). После работы программы на экран дисплея выводятся все пятерки натуральных чисел x1, x2, x3, x4, x5 такие, что x1 >= x2 >= x3 >= x4 >= x5 и (x1 + x2 + x3 + x4 + x5) = n.
Краткое описание.
Данная задача была выполнена на языке C++, в среде программирования Dev-C++.
В данной программе были использованы 2 стандартные библиотеки для работы с потоками ввода/вывода(iostream.h) и для управления программой(conio.h).
В программе созданы и использованы 2 пользовательские функции: drawResult для вывода данных на экран и check для проверки выполнения условий задачи.
Для решения задачи определения всех натуральных чисел, которые в сумме составляют число введенное пользователем, был использован перебор всех возможных комбинаций из 5 чисел. Перебор комбинаций осуществлялся с помощью 5 циклов.
Для ускорения циклов на каждом шаге цикла выполняется следующая проверка(функция check): если сумма чисел больше n, цикл прерывается. Это позволяет избежать лишние циклы.
По условию задачи программа выводит результат на экран.
Алгоритм работы программы.
Подключаем библиотеки для работы с потоками ввода/вывода(iostream.h), для управления программой(conio.h).
Начало главной функции main. С самого начала программы, каждый раз выполняем очистку экрана после предыдущих запусков программы.
Создаем прототип функции drawResult.
Создаем прототип функции check.
Инициализируем глобальные переменные:
«int x1, x2, x3, x4, x5» - натуральные числа
«int n» - число вводимое пользователем
Начало главной функции:
Чистка экрана.
Вывод на экран надпись «Enter the number:» и ждем ввода числа.
После ввода числа выполняем перенос строки и обнуляем переменные.
Стартуем первый цикл для числа x5. Начальное значение n. Цикл убывающий. На каждом шаге цикла проверяем выполнения условия x1+x2+x3+x4+x5=n, это выполняет функция check.
Стартуем второй цикл для числа x4, цикл вложенный. Начальное значение x5. Также выполняется проверка функцией check. Тоже самое выполняется для еще для 3 циклов.
В пятом(последнем) цикле выполняется проверка выполнения условий задачи. И вывод результатов на экран если условия выполняются.
После завершения всех циклов программа ждет нажатия клавиши(getch) и заканчивает свою работу.
Блок – схема.
Листинг.
#include <iostream.h>//функция вывода на экран cout
#include <conio.h>//getch() - пауза
void drawResult();//прототип функции, которая выводит на экран результат
int check();// проверка суммы числе, если сумма больше n возвращает 0, иначе возвращает 1
int x1, x2, x3, x4, x5, n;//числа
int main(){
system ("cls");//чистка экрана
cout << "Enter the number: ";
cin >> n;//число n
cout << endl;//перенос строки
x1 = x2 = x3 = x4 = x5 = 0;//обнуляем переменные
for(x5 = n; x5 > 0; x5--){//первый цикл для x5
if(check()==0)
continue;
for(x4 = x5; x4 > 0; x4--){//второй цикл для x4
if(check()==0)
continue;
for(x3 = n; x3 > 0; x3--){//третий цикл для x3
if(check()==0)
continue;
for(x2 = x3; x2 > 0; x2--){//четвертый цикл для x2
if(check()==0)
continue;
for(x1 = x2; x1 > 0; x1--){//пятый цикл для x4
if(check()==0)
continue;
//проверка условия задачи
if(x1 < x2 && x2 < x3 &&
x3 < x4 && x4 < x5 &&
((x1 + x2 + x3 + x4 + x5) == n)) {
drawResult();//выводим результат
}
}
}
}
}
}
getch();//ждем нажатия клавиши, только потом завершается программа
}
void drawResult(){
cout << "x1 = " << x1 << "; x2 = " << x2 << "; "
<< "x3 = " << x3 << "; x4 = " << x4 << "; "
<< "x5 = " << x5 << endl;
}
int check(){
if((x1 + x2 + x3 + x4 + x5) > n){
return 0;
}
return 1;
}
Дата добавления: 2015-11-30; просмотров: 48 | Нарушение авторских прав