Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№3 вар.№23Денис
.docУфимский государственный авиационный технический университет
Кафедра АСУ
Отчёт
по лабораторной работе №3
по дисциплине ”Программирование на ЯВУ”
вариант №23
Выполнил: студент группы АСОИ-136
Пашин Д. Проверил: доцент кафедры АПрИС
Фёдорова Н.И.
Уфа 2007
Тема: Обработка целых данных
Цель работы: Знакомство и получение навыков обработки целых данных
в языке С++.
Вариант №23.
Задание:
Для заданного натурального числа N найти все целые числа, имеющие убывающую последовательность цифр, сумма которых равна N
Решение:
Для начала необходимо найти простые числа, сумма цифр которых равна N в диапазоне от 1 до т.к.
число большее уже не будет удовлетворять условию убывающей последовательности цифр.
Для этого: 1) проверяем этот диапазон на наличие простых чисел.
2) если простые числа есть, то сумму цифр каждого из них проверяем на равенство с N.
Нужно каждую цифру заданного числа i(1…N) сравнить с цифрой разрядом выше: больше она или меньше
3)Далее проверяем цифры числа на убывающую последовательность.
Блок-схема
Текст программы на С++
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{long N,s,c,z,i,j,y;
int f,k,fl2,k1,k2,fl,ind;
clrscr();
cout<<"\n\n vvedite chislo N \n";
cout<<"\n N=";
cin>>N;
s=0;ind=0;
f=0;fl=1;
c=1;fl2=1;
for(k=1;k<N;k++)
c*=10;
c*=N;
for(i=31;i<=c;i=i+2)
{
for(j=3;j<i;j=j+2)
{
z=i%j;
if(z==0)
{
fl=0;
}
}
if(fl==1)
{
for(y=i;y>0;y/=10)
s+=(y%10);
if(s==N)
{
for(y=i;y>0;y/=10)
{
k1=y%10;
k2=((y/10)%10);
if(y<10)
if(k2==0)
k2=k1+1;
if(k1>=k2)
fl2=0;
}
if(fl2==1)
{
ind++;
cout<<" "<<ind<<"-e chislo: "<<i<<endl;
f=1;
}
}
fl2=1;
}
fl=1;s=0;
}
if(f==0)
cout<<endl<<"net takih chusel"<<endl;
cout<<"conec";
getch();
}
Проверка:
N=4;
Результат: 31;
N=7;
Результат: 43, 61, 421.