Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <stdio.h>
- #include <fstream>
- #include <stdlib.h>
- #include <sstream>
- #include <typeinfo>
- using namespace std;
- class BigNum{
- /** I/O друзьяшки **/
- friend istream &operator>>(istream &stream, BigNum &obj);
- friend ostream &operator<<(ostream &stream, const BigNum obj);
- private:
- int *digits;
- int size;
- int sign;
- public:
- /** Конструктор который создает BigNum со значением 0 **/
- BigNum();
- /** Создает длинное число со значением и размером **/
- BigNum(int n, int size);
- /** Создает число со значением int **/
- BigNum(int n);
- /** Тоже самое только для long double **/
- BigNum(long double d);
- /** Создание BigNum считывающего значения из string **/
- BigNum(string s);
- /** Тоже самое из char строки **/
- BigNum(const char s[]);
- /** Конструктор копирования **/
- BigNum(const BigNum &n);
- /** Уборка, деструктор. **/
- ~BigNum();
- /** Возвращает знак n: -1, 0, 1**/
- template <class X> X sig(X n);
- /** Возвращает количество цифр в числе **/
- int length(){ return size; }
- /** Арифметика **/
- BigNum operator = (BigNum &b);
- BigNum operator + (BigNum b);
- BigNum operator - (BigNum b);
- BigNum operator * (BigNum b);
- BigNum operator / (BigNum b);
- /** Сравнение **/
- bool operator < (BigNum b);
- bool operator > (BigNum b);
- bool operator == (BigNum b);
- bool operator <= (BigNum b);
- bool operator >= (BigNum b);
- int compare(BigNum b);
- /** Логарифмы **/
- BigNum abs(BigNum num);
- BigNum fact(int n);
- };
- template <class X> X sig(X n){
- if (n>0)
- return 1;
- if (n<0)
- return -1;
- if (n==0)
- return 0;
- }
- BigNum::BigNum(){
- size = 128;
- sign = 0;
- digits = new int[size];
- memset(digits, 0, size);
- }
- istream &operator>>(istream &stream, BigNum &obj){
- string str;
- cin >> str;
- if(str[0]=='-'){
- obj.sign = -1;
- str.erase(0,1);
- }
- else
- obj.sign = 1;
- int pos = 0;
- for(int i = str.size()-1; i>=0; i--)
- obj.digits[pos++] = str[i]-'0';
- obj.size = str.size();
- return stream;
- }
- ostream &operator<<(ostream &stream, const BigNum obj){
- if(!obj.size){
- cout << "0";
- }
- if(obj.sign==1){
- for(int i=obj.size-1; i>=0; i--)
- stream << obj.digits[i];
- }
- else{
- printf("-");
- for(int i=obj.size-1; i>=0; i--)
- stream << obj.digits[i];
- }
- return stream;
- }
- int main(){
- BigNum a,b,c;
- cin >> a;
- cout << "123" << endl;
- cout << "stop" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment