Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //klasy pochodne, protected (jak private, tylko ze dostepne dla klas pochodnych),
- //klasa pochodna do klasy DL, operator *, ==, !=, >,<
- #include <iostream>
- #include <cctype>
- #include <cmath>
- #include <cstring>
- #include <string>
- using namespace std;
- class duzaLiczba {
- public:
- char *wsk;
- friend istream &operator >>(istream &s, duzaLiczba &o1);
- friend ostream &operator <<(ostream &s, duzaLiczba &o1);
- duzaLiczba (){
- wsk=NULL;
- }
- duzaLiczba(duzaLiczba&o1){
- int dlugosc=strlen(o1.wsk);
- wsk = new char[dlugosc];
- for (int i=0;i<strlen(o1.wsk);i++){
- wsk[i]=o1.wsk[i];
- }
- }
- duzaLiczba operator = (const duzaLiczba &o1){
- int dlugosc = strlen(this->wsk);
- if (this->wsk!=NULL) delete [] this->wsk;
- dlugosc = strlen(o1.wsk);
- this->wsk = new char[dlugosc];
- for (int i=0; i<strlen(o1.wsk); i++){
- this->wsk[i]=o1.wsk[i];
- }
- return *this;
- }
- duzaLiczba operator + (const duzaLiczba &o1){
- duzaLiczba wynik;
- /*int dlugosc = strlen(this->wsk)>=strlen(o1.wsk) ? strlen(this->wsk) : strlen (o1.wsk);
- wynik.wsk=new char[dlugosc];
- int roznica=abs(strlen(o1.wsk)-strlen(this->wsk));
- for (int i=0; i<dlugosc; i++){
- if ()
- }
- //int a = strlen(o1.wsk)>=strlen(this->wsk) ? strlen(o1.wsk) : strlen(this->wsk);
- int add,a,b,dlugosc;
- dlugosc=abs(strlen(o1.wsk)-strlen(this->wsk));
- for (int i=1; i<a; i++){
- if (strlen(this->wsk)-i<0) b=0;
- else b=this->wsk[strlen(this->wsk)-i]-48;
- cout<<b;
- if (strlen(o1.wsk)-i<0) a=0;
- else a=o1.wsk[strlen(o1.wsk)-i]-48;
- if (a+b+add>9){
- wynik.wsk[dlugosc-1]=(a+b+add)+48;
- add=0;
- }
- else {
- wynik.wsk[dlugosc-1]=(a+b+add-10)+48;
- add=1;
- }
- }
- wynik.dlugosc= o1.dlugosc>=this->dlugosc ? o1.dlugosc : this->dlugosc;
- wynik.wsk=new char[wynik.dlugosc];
- int a = abs(this->dlugosc-o1.dlugosc);
- int add=0,b,c;
- for (int i=wynik.dlugosc - 1; i>=0; i-- ){
- if (o1.dlugosc>=this->dlugosc){
- if (i-a<0) b=0;
- else b=this->wsk[i-a]-'0';
- c=o1.wsk[i] - 48;
- }
- else {
- if (i-a<0) c=0;
- else b=o1.wsk[i]-48;
- c=this->wsk[i];
- }
- cout<<b<<c;
- if (a+b+add>9) {
- wynik.wsk[i]=b+c+add-10+48;
- add=1;
- }
- else {
- wynik.wsk[i]=b+c+add+48;
- add=0;
- }
- }*/
- return wynik;
- }
- };
- istream &operator >> (istream &s, duzaLiczba &o1){
- if (o1.wsk!=NULL){
- delete [] o1.wsk;
- o1.wsk=NULL;
- }
- string a;
- s>>a;
- int dlugosc=a.size();
- o1.wsk = new char[dlugosc];
- for (int i=0; i<dlugosc; i++){
- o1.wsk[i]=a[i];
- }
- }
- ostream &operator << (ostream &s, duzaLiczba &o1){
- int dlugosc=strlen(o1.wsk);
- for (int i=0; i<dlugosc; i++){
- s<<o1.wsk[i];
- }
- return s;
- }
- class duzaLiczba2: public duzaLiczba {
- public:
- duzaLiczba2():duzaLiczba() {}
- /*duzaLiczba2 &operator * (const duzaLiczba &o1){
- int a=strlen(o1.wsk),b=strlen(this->wsk);
- duzaLiczba wynik;
- wynik.wsk = new char[a+b-1];
- int add,c;
- if (a>b){
- for (int i=0; i<b;i++){
- for (int j=0;j<a;j++){
- c=(this->wsk[j]-'0')*(o1.wsk[i]-'0');
- wynik.wsk[i]=(((c%10)+(wynik.wsk[i]-'0'))%10)+'0';
- if ((c%10)+(wynik.wsk[i]-'0')>9)
- }
- }
- }
- }*/
- bool operator == (const duzaLiczba &o1){
- if (strlen(this->wsk)!=strlen(o1.wsk)) return false;
- for (int i=0;i<strlen(o1.wsk);i++){
- if (o1.wsk[i]!=this->wsk[i]) return false;
- }
- return true;
- }
- bool operator != (const duzaLiczba &o1){
- if (strlen(this->wsk)!=strlen(o1.wsk)) return true;
- for (int i=0;i<strlen(o1.wsk);i++){
- if (this->wsk[i]==o1.wsk[i]) return false;
- }
- return true;
- }
- bool operator > (const duzaLiczba &o1){
- cout<<this->wsk[0];
- if (strlen(this->wsk)>strlen(o1.wsk)) return true;
- if (strlen(o1.wsk)>strlen(this->wsk)) return false;
- for (int i=0; i<strlen(o1.wsk);i++){
- if (o1.wsk[i] > this->wsk[i]) return false;
- }
- if (o1.wsk[strlen(o1.wsk)-1]==this->wsk[strlen(this->wsk)-1]) return false;
- return true;
- }
- };
- int main(){
- duzaLiczba2 o1, o2;
- cin>>o1;
- cin>>o2;
- cout<<endl;
- if (o2>o1) cout<<"Tak"<<endl;
- if (o2>o1) cout<<"Nie";
- return 0;
- /*string a="012345";
- int b=a[1]-48;
- cout<<b;*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement