Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№3 вар.№23Денис

.doc
Скачиваний:
22
Добавлен:
02.05.2014
Размер:
71.68 Кб
Скачать

Уфимский государственный авиационный технический университет

Кафедра АСУ

Отчёт

по лабораторной работе №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.

5