Guest User

Untitled

a guest
May 1st, 2014
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <string>
  4. #include <stdio.h>
  5. #include <fstream>
  6. #include <stdlib.h>
  7. #include <sstream>
  8. #include <typeinfo>
  9. using namespace std;
  10.  
  11. class BigNum{
  12.     /** I/O друзьяшки **/
  13.     friend istream &operator>>(istream &stream, BigNum &obj);
  14.     friend ostream &operator<<(ostream &stream, const BigNum obj);
  15. private:
  16.     int *digits;
  17.     int size;
  18.     int sign;
  19. public:
  20.     /**  Конструктор который создает BigNum со значением 0  **/
  21.     BigNum();
  22.  
  23.     /**  Создает длинное число со значением и размером   **/
  24.     BigNum(int n, int size);
  25.  
  26.     /**  Создает число со значением int  **/
  27.     BigNum(int n);
  28.  
  29.     /**  Тоже самое только для long double    **/
  30.     BigNum(long double d);
  31.  
  32.     /**  Создание BigNum считывающего значения из string      **/
  33.     BigNum(string s);
  34.  
  35.     /**  Тоже самое из char строки **/
  36.     BigNum(const char s[]);
  37.  
  38.     /**  Конструктор копирования      **/
  39.     BigNum(const BigNum &n);
  40.  
  41.     /**  Уборка, деструктор.    **/
  42.     ~BigNum();
  43.     /** Возвращает знак n: -1, 0, 1**/
  44.     template <class X> X sig(X n);
  45.  
  46.     /** Возвращает количество цифр в числе **/
  47.     int length(){ return size; }
  48.  
  49.     /**  Арифметика   **/
  50.     BigNum operator = (BigNum &b);
  51.     BigNum operator + (BigNum b);
  52.     BigNum operator - (BigNum b);
  53.     BigNum operator * (BigNum b);
  54.     BigNum operator / (BigNum b);
  55.  
  56.     /** Сравнение **/
  57.     bool operator < (BigNum b);
  58.     bool operator > (BigNum b);
  59.     bool operator == (BigNum b);
  60.     bool operator <= (BigNum b);
  61.     bool operator >= (BigNum b);
  62.     int compare(BigNum b);
  63.  
  64.     /** Логарифмы **/
  65.     BigNum abs(BigNum num);
  66.     BigNum fact(int n);
  67. };
  68.  
  69. template <class X> X sig(X n){
  70.     if (n>0)
  71.         return 1;
  72.     if (n<0)
  73.         return -1;
  74.     if (n==0)
  75.         return 0;
  76. }
  77. BigNum::BigNum(){
  78.     size = 128;
  79.     sign = 0;
  80.     digits = new int[size];
  81.     memset(digits, 0, size);
  82. }
  83.  
  84. istream &operator>>(istream &stream, BigNum &obj){
  85.     string str;
  86.     cin >> str;
  87.     if(str[0]=='-'){
  88.         obj.sign = -1;
  89.         str.erase(0,1);
  90.     }
  91.     else
  92.         obj.sign = 1;
  93.     int pos = 0;
  94.     for(int i = str.size()-1; i>=0; i--)
  95.         obj.digits[pos++] = str[i]-'0';
  96.     obj.size = str.size();
  97.     return stream;
  98. }
  99. ostream &operator<<(ostream &stream, const BigNum obj){
  100.     if(!obj.size){
  101.         cout << "0";
  102.     }      
  103.     if(obj.sign==1){
  104.         for(int i=obj.size-1; i>=0; i--)
  105.             stream << obj.digits[i];       
  106.     }
  107.     else{
  108.         printf("-");
  109.         for(int i=obj.size-1; i>=0; i--)
  110.             stream << obj.digits[i];       
  111.     }
  112.     return stream;     
  113. }
  114.  
  115. int main(){
  116.     BigNum a,b,c;
  117.     cin >> a;
  118.  
  119.  
  120.     cout << "123" << endl;
  121.     cout << "stop" << endl;
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment