Отчет лаба 1

advertisement
Федеральное агентство по образованию
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет АВТ
Кафедра ИПС
Системы счисления
Отчет по лабораторной работе № 11
по дисциплине "Программирование на языке высокого уровня"
вариант № 9
Выполнил:
студент группы 8В83
Колчанов А.В.
Проверил:
преподаватель
Погребная Т.А.
г. Томск, 2010
Условие задачи
Получить последовательность
десятичных цифр числа n! , т.е. такую
целочисленную последовательность, в которой каждый член di удовлетворяет условию
0 di 9
и,
дополнительно,
n-целое, ввести с клавиатуры. Задачу решить в частности при n=100.
Алгоритм решения
1. Вычисляется значение n!-2n.
2. Вычисляется количество цифр в числе n!-2n. Выделяется массив данной размерности.
3. Заполнение массива цифрами из числа n!-2n.
2
Листинг
/*
(c) Andrey Kolchanov, 2010.
*/
#include
#include
#include
#include
"stdafx.h"
"iostream"
"conio.h"
"math.h"
using namespace std;
double fact(double i)
{
if (i<=1) return 1; else return i*fact(i-1);
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Enter n: ";
double n;
cin >> n;
//получаем нужное число
n=fact(n)-pow((long double)2,(long)n);
//определяем количество цифр
int count = 0;
double n2=n;
while (n2>1)
{
n2=n2/10;
count++;
}
int* a;
a = new int[count];
n2=n;
int b=0;
while (n2>1)
{
a[count-b-1]=fmod(n2,10);
n2=n2/10;
b++;
}
cout<<endl;
for (int i=0; i<count; i++)
cout << a[i];
getch();
return 0;
}
3
Результат работы программы
Enter n: 100
9332621544394408086048682862822064684000442688840062684860480868468224484046402
862608208886284486804200400484620848004862686866402802860622640446000204666408
Вывод
Научились «переводить» цифры из числа в массив. Кроме того, я узнал функцию fmod() – она
используется для получения остатка от деления для чисел типа double.
4
Download