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

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

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

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

14.12.2013, 17:16. Просмотров 229. Ответов 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
Посмотрите здесь:

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

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

Разработать класс множества - C++
Объект «множество символов заданной мощности». Предусмотреть возможность операции присваивания, объединения двух множеств, вывода на печать...

Разработать класс Tmatrix - C++
Здравствуйте!Помогите сделать задачу Разработать класс Tmatrix для работы с двумерным массивом (матрицей), содержащим целые числа....

Разработать и реализовать класс - C++
В общем проблема с формулировкой задания Разработать интерфейс класса для представления предметной области следующего языка....

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

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

Разработать класс Матрица - C++
Помогите исправить код!!! задача рабочая,но целиком не работает!Т.е когда вырезаешь (коментируешь) часть кода работает одна чать программы...

Разработать класс String - C++
Разработать класс String определив для него методы: • копирования строк, реализовав оператор = ; • поиска подстроки; • слияния строк,...

Разработать класс String - C++
Разработка класса строка Задание Разработать класс String определив для него методы: • копирования строк, реализовав оператор = ; ...


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

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

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