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

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

Восстановить пароль Регистрация
 
trezz
0 / 0 / 1
Регистрация: 21.01.2013
Сообщений: 95
14.12.2013, 17:16     Разработать класс large #1
Помогите, решить задачу. Длинную арифметику перечитал уже несколько десятков раз, но все равно не понял. Небольшой исходник по первой части я уже сделал..., а дальше тупик.. В с++ почти ноль.
Разработать класс 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++
C++ Разработать класс
C++ Разработать класс
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. C++
Разработать класс и производный класс C++
C++ Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты
Разработать класс large – длинное целое C++
C++ Разработать производный от абстрактного класса Figure класс и класс, производный от производного

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 00:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru