Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
trezz
0 / 0 / 1
Регистрация: 21.01.2013
Сообщений: 107
#1

Разработать класс large - C++

14.12.2013, 17:16. Просмотров 230. Ответов 0
Метки нет (Все метки)

Помогите, решить задачу. Длинную арифметику перечитал уже несколько десятков раз, но все равно не понял. Небольшой исходник по первой части я уже сделал..., а дальше тупик.. В с++ почти ноль.
Разработать класс large – длинное целое. Для хранения одной десятичной цифры использовать одно число типа char. Количество десятичных цифр, которые должны размещаться в этом числе, передавать в конструкторе. Реализовать методы присваивания, сложения двух чисел, печати числа на экране.
Переписать программу вычисления числа Фибоначчи для типа large. Вычислить fn=100 (22 десятичных цифры). Заме-чание: если Вы в прошлый раз использовали рекурсивный алгоритм вычисления чисел Фибоначчи, то теперь Вам необходимо разработать нерекурсивный алгоритм, так как рекурсивное вычисление для n=100 займет слишком много времени.

#include <iostream>
#include <stdlib.h>
long fibonacci(long);
using namespace std;

int main()
{
setlocale(LC_ALL,"Rus");
int i,j=0;
const int n=20;
int a[n];

cout <<"Массив Фибоначии \n"<<endl;
for(i=0;i<=n-1;i++)
a[i]=fibonacci(i);
for(i=0;i<=n-1;i++)
{
cout << '[' << i+1 << ']' << '=' << a[i] <<'\n';
}
return 0;
}

// Recursive definition of function fibonacci
long fibonacci(long n)
{
if (n==0 || n==1) // base case
return n;
else // recursive case
return fibonacci(n-1)+fibonacci(n-2);
}

Добавлено через 1 час 13 минут
Нашел довольно полезный сайт и сделал сам)
Вот может кому понадобится
#include <iostream>
using namespace std;
unsigned fibonacci(long n)
{
if (n < 2)
return n;
unsigned z= 1, m = n;
while (m > 1) {
m >>= 1;
z <<= 1; }
unsigned fn = 1, fn1 = 1, gn, gn1;
while (z > 1) {
z >>= 1;
gn = fn;
gn1 = fn1;
if (n & z) {
fn = gn1 * gn1 + gn * gn;
fn1 = gn1 * gn1 + 2 * gn * gn1;
} else {
fn = 2 * gn * gn1 - gn * gn;
fn1 = gn1 * gn1 + gn * gn; } }
return fn;
}
int main()
{
setlocale(LC_ALL,"Rus");
cout <<"Массив Фибоначчи \n "<<endl;
for (int i = 0; i < 100; i++)
cout << '[' << i+1<< ']' << '=' << fibonacci(i) <<'\n';
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 17:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработать класс large (C++):

Разработать класс large – длинное целое - C++
Нужно сделать на курсовик, мозг после java уже потек, а тут Это. Кто может помогите, буду очень благодарен... Разработать класс large –...

Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты - C++
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.

Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. - C++
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.

Разработать класс и производный класс - C++
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.

Разработать производный от абстрактного класса Figure класс и класс, производный от производного - C++
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в дальнейшем полной информации об объекте: ...

Разработать класс - C++
Нужно создать класс Number, далее создать одномерный массив из 10-ти элементов типа Number. Если можно, код программы с пояснением....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 17:16
Привет! Вот еще темы с ответами:

Разработать класс - C++
Помогите решить задачи: Разработать класс Number. Класс должен быть прозрачен с позиции любого числового типа языка С. Таким образом...

Разработать класс - C++
Помогите пожалуйста. Необходимо построить окружность, вписанную в равносторонний треугольник, если известно, что некоторые две его вершины...

Разработать класс - C++
Помогите написать программу, вот задание: Разработать класс, набор методов (конструктор и минимум два метода) для программной модели...

Разработать класс - C++
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru