Mã:
#include<windows.h>#include "iostream"#include "string.h"#include "conio.h"#include "math.h"using namespace std;class Solon{private: char value[1000]; int size; int sign; // = 0 -> so duong, =-1 -> so ampublic: Solon(char giatri[1000]) { strcpy(this->value,giatri); this->sign =0; //khoi tao cho bat ky so nao la duong this->size = strlen(giatri);//do dai thay doi theo gia tri } //----------------------------------------------------------------- Solon() {} void Input(char *t); void Output(); //----------------------------------------------------------------- int Solon::operator>=(Solon B); //day la ham so sanh 2 so Solon so sanh ca 2 so duong ,2 so am Solon operator +(Solon B); Solon operator -(Solon B); }; //-------------------------------------------------------------int Solon::operator>=(Solon B){ if (this->sign == 0&& B.sign ==0)/eu A la so duong va B la so duong (A>0 va B>0) { if (strlen(this->value)>strlen(B.value)) //chieu dai so nao lon hon thi lon hon { return 1; } else if (strlen(this->value)==strlen(B.value))/eu chieu dai bang nhau { for (int i=0;i< strlen(this->value);i++ )//tu hang cao nhat tro di,so nao lon hon thi so do lon hon { if (this->value[i]<B.value[i]) { return -1; //B<A } else if (this->value[i]>B.value[i]) { return 1; } } return 0; // neu tat ca cac so deu = nhau thi 2 so bang nhau } else return -1; //cuoi cung chieu dai B< chieu dai A thi B<A } else if (this->sign == 0&& B.sign == -1 ) /eu A >0 va B<0 { return 1; //A>B } else if (this->sign == -1&& B.sign == 0 ) /eu A <0 va B>0 { return -1;//A<B } else/eu ca A va B la 2 so AM { if (strlen(this->value)>strlen(B.value)) { return -1; } else if (strlen(this->value)==strlen(B.value))/eu chieu dai bang nhau { for (int i=0;i< strlen(this->value);i++ ) { if (this->value[i]<B.value[i]) { return 1; //B<A } else if (this->value[i]>B.value[i]) { return -1; } } return 0; // neu tat ca cac so deu = nhau thi 2 so bang nhau } else return 1; }}//=============================================================================================== Solon Solon::operator+(Solon B)//ham tinh tong co 2 nhanh,tong cung dau va tong trai dau{ Solon C; int nho =0; int max,min; int j; if (this->sign == 0 && B.sign == 0)/eu la 2 so cung dau duong { if (B>= (*this)==1||B>=(*this)==0 ) //goi ham so sanh 2 Solon ma ta da dinh nghia neu so B > so A hoac B==A thi tinh tong A+B { max = strlen(B.value); min = strlen(this->value); j=max-1; for(int i=max-1;i>=max - min ;i--) { C.value[j] = (B.value[i] -'0' + this->value[i + min -max] - '0' + nho) %10; nho = (B.value[i] - '0' + this->value[i + min -max] - '0' + nho) /10; C.value[j] = (C.value[j] + '0' ); j--; } for (i=max -min -1 ;i>=0;i--)//chay khi 2 so khong co so cac so bang nhau { C.value[j] = (B.value[i] - '0' + nho) %10; nho = (B.value[i] -'0' + nho) /10; C.value[j] = (C.value[j] + '0' ); j--; } if (nho == 1)/eu van con nho sau khi ket thuc,gia su nhu 99+2 thi phai tang len 1 so thanh so co 3 chu so { char temp[1001]; temp[0]= '1'; for(int i= 1;i<=max;i++) { temp[i] = C.value[i-1]; } temp[max+1]='\0'; strcpy(C.value,temp); C.sign = B.sign; /eu la tong 2 so cung dau,ket qua lay dau cua bat ky so nao trong 2 so return C; } C.sign = B.sign; C.value[max] ='\0'; return C; } else /guoc lai neu so A > so B thi tinh tong B+ A (goi lai ham nay Solon Solon::operator+(Solon &B) ) { return B + (*this);//( khi nay la A+B ma) } } else if(this->sign == -1 && B.sign == -1) /eu 2 so la 2 so am A<0 va B<0 { Solon D,E; D= B; E = (*this); D.sign = 0; E.sign = 0; C = D + E; C.sign = -1; return C; } else /eu 2 so A va B la khac dau thi ta goi lai ham tinh hieu 2 so { if (this->sign == -1 && B.sign ==0) /eu A<0 va B>0 { Solon D,E; D = B; E = (*this); D.sign = 0; //lay dau gia tri tuyet doi nen sign =0 E.sign = 0; return D - E; } else if (this->sign == 0 && B.sign ==-1) { Solon D,E;/eu 2 so trai dau va A>0 va B<0 D = B; E = (*this); D.sign = 0; //lay dau gia tri tuyet doi nen sign =0 E.sign = 0; C = D - E ; /eu A>0 va B<0 C.sign = 0; return C; } }return C;} //=======================================================================================Solon Solon::operator-(Solon B){ Solon C; int max,min,nho =0; if (this->sign==0 && B.sign == 0 ) /eu 2 so la cung dau duong { if (*this>=B==1||((*this>=B)==0)) /eu A>B hoac A == B { max = strlen (this->value); //A>= B nen Max = A min = strlen(B.value);// Min =B for (int i=max-1;i>=max-min;i--) { if (this->value[i] - nho >=B.value[i+min -max]) //phep tinh hieu nhu thong thuong { C.value[i] = ( this->value[i] -'0' ) - (B.value[i+min -max] - '0') - nho; C.value[i] = C.value[i] + '0'; nho =0; // A[i]>B[i] nen nho =0 } else { C.value[i] = 10 + (this->value[i] -'0') - (B.value[i+min -max] - '0') - nho; C.value[i] = C.value[i] + '0'; nho =1; } } if (nho ==0) { for (i = max -min -1;i>=0;i--) { C.value[i] = this->value[i]; } C.value[max] ='\0'; C.sign = 0; return C; } for (i=max-min-1;i>=0;i--) { if (nho ==0) { C.value[i] = this->value[i]; } if (this->value[i] - nho -'0' >= 0) { C.value[i] = ( this->value[i] -'0' ) - nho; C.value[i] = C.value[i] + '0'; nho =0; } else if (this->value[i] - nho -'0' < 0) { C.value[i] = 10 + (this->value[i] -'0') - nho; C.value[i] = C.value[i] + '0'; nho =1; } } if (nho ==1) { C.value[0] = '0'; } C.value[max] = '\0'; C.sign = 0; return C; } else /eu A<B { C= B - (*this); //goi lai ham tru de tinh C.sign = -1; // vi so A<B nen A-B <0 return C; } } else if ((this->sign ==-1&& B.sign ==-1)) /eu 2 so cung dau am A<0 va B<0 thi A-B = |B| - |A| { Solon D,E; E = B; D = (*this); D.sign = 0; E.sign = 0; return E -D; } else/eu 2 so trai dau nhau { if (this->sign == 0 && B.sign ==-1) /eu so A >0 va so B<0 -> A-B = |A|+ |B| { Solon D; D = B; // thao tac tren D de ko anh huong den B -> can than vi co the thay doi so lieu cua B D.sign =0;// lay gia tri tuyet doi cua so B C = (*this)+D; C.sign = 0; return C; } else if(this->sign == -1 && B.sign ==0) /eu so A <0 va so B>0 -> A-B = -(|A|+ |B|)g { Solon D; D = (*this); // thao tac tren D de ko anh huong den B -> can than vi co the thay doi so lieu cua B D.sign =0; // lay gia tri tuyet doi cua so A C = B+D; C.sign = -1; return C; } }return C; } //=======================================================================================================void Solon::Input(char *t)//...........................ham nhap lam nhiem vu lay gia tri tuyet doi cua 1 so{ int j=0; bool flag; do { flag =true; j++; //..............................j la bien dem,neu 1 so nhap >=2 lan co nghia la no nhap sai if (j>1)//...........................tu lan thu 2,so dang nhap la so nhap sai { cout<<"
BAN NHAP SAI KIEU SO! HAY NHAP DUNG KIEU SO:
";//thong bao loi khi nhap sai } cout<<" Nhap so nguyen lon "<<t<<": "; cin>>value; size =strlen(value); if (this->value[0] == '-')/eu la so am thi phai lay gia tri tuyet doi cua so do { for (int i=1;i<size;i++) { if (value[i]<'0'||value[i]>'9') { flag = false; break; } } /eu nhap dung thi luu no la so am,tuc la =-1 this->sign =-1; for (i=0;i<size;i++) { this->value[i]= this->value[i+1];//luu gia tri tuyet doi cua so do } } else if (this->value[0]>='0'&&this->value[0]<='9')/eu la so duong thi kiem tra x[0] co tu 0 -> 9 khong??? { this->sign = 0; //so duong -> ghi la 0 va gia tri = gia tri cua no for (int i=1;i<size;i++) { if (value[i]<'0'||value[i]>'9')/eu co gia tri >'9' hoac <'0' thi bat nhap lai { flag = false;//cho = sai de nhap lai break;//thoat khoi vong lap gan nhat ( la vong lap for day ne ) } } size = strlen(this->value); //lay kich thuoc cua bien duong } else flag = false;//cho = sai de nhap lai } while (flag == false);/eu nhap sai thi phai nhap lai //.....................sau khi nhap dung,gio phai truyen gia tri la sign,size,value cho class Solon //.....................voi so la so duong thi .....tan can xet neu 0000001 -> =1 while (this->value[0] == '0') { for(int i=0;i<=strlen(this->value);i++) { this->value[i]= this->value[i+1]; } } if (this->value[0]>='0'&&this->value[0]<='9')/eu la so duong binh thuong thi luu binh thuong len Solon { size = strlen(this->value); } if (this->value[0]==NULL)//sau khi xoa neu la NULL -> =0 { this->value[0] = '0'; size =1; } ///////////////////////////////////eu la so am thi xoa tat ca cac so 0 dung sau dau - if (this->value[0]=='-') //VD nhu -0000001 <-> -1 { while (this->value[1] == '0') { for(int i=1;i<=strlen(this->value);i++) { this->value[i]= this->value[i+1]; } } sign =-1; //la so Am thi sign =-1 if (this->value[1]==NULL) //sau khi xoa cac so 0 neu la -NULL thi this.value[0] = '0' tuc so do bang 0 { this->value[0] ='0'; size =1; sign =0; // so 0 la so duong } }}//--------------------------------------------------------------------------------void Solon::Output() { if (this->sign==0) { cout<<" "<<value; } else { cout<<"-"<<value; } }//------------------------------------------------------------------------------------- class Menu{ Solon A,B,ds[100];public: Menu():A(),B() {cout<<"
........ CHUONG TRINH XU LY SO NGUYEN LON.........";} int Show() { int k; cout<<"
1.Thuc hien cong hai so nguyen lon."; cout<<"
2.Thuc hien tru hai so nguyen lon."; cout<<"
3.Thuc hien ham cong n so nguyen lon." ; cout<<"
4.Thoat chuong trinh."; cout<<"
======================================================="; cout<<endl<<"Chon muc thao tac: "; cin>>k; return k; }void process() { Solon kq; int k,n,i; do { k=Show(); switch(k) { case 1 : { system("cls"); A.Input("A");B.Input("B"); cout<<"
Tong hai so nguyen lon A + B = ";(A+B).Output(); break; } case 2 : { system("cls"); A.Input("A");B.Input("B"); cout<<"
Hieu hai so nguyen lon A - B = ";(A-B).Output(); break; } case 3 : { system("cls"); cout<< "
Nhap so so nguyen lon muon cong! n = "; cin>>n; Solon kq(""); for (i=0;i<n;i++) { cout<<"
"<<i+1<<" "; ds[i].Input(""); kq=kq+ds[i]; } cout<< "
Tong cua "<<n<<" so nguyen lon la: "; kq.Output(); break; } } } while(k!=4); }};//==================================================================================== void main(){ Menu f; f.process();}
* Vui lòng cho code vào tag code khi post bài trên C Việt
Bất chấp những lầm tưởng phổ quát, hồ hết những người có âm đạo đều khó lên đỉnh khi bị kích thích âm đạo. Tuy nhiên, điều đó không có tức thị nó không thể vui được! Việc xâm nhập vào âm đạo bằng...
Quý bà giải tỏa bằng việc kích...