Федеральное агентство по образованию ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Факультет АВТ Кафедра ИПС Системы счисления Отчет по лабораторной работе № 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