Алгоритмы на С++
Решение задачи 1 главы 4
Длинная арифметика. Реализуйте сравнение длинных чисел.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
const int MAXN=1000; struct nlong { int used; int a[MAXN]; // www.itmathrepetitor.ru }; // <0 x1<x2 // =0 x1=x2 // >0 x1>x2 int compare(nlong x1, nlong x2) { if (x1.used!=x2.used) return x1.used-x2.used; for (int i=x1.used-1; i>=0; i--) if (x1.a[i]!=x2.a[i]) return x1.a[i]-x2.a[i]; return 0; } // www.itmathrepetitor.ru void show(nlong x, bool br=false) { if (!x.used) cout<<"no digits"; else for (int i=x.used-1; i>=0; i--) cout<<x.a[i]; if (br) cout<<endl; } void reverse(nlong &x) { int tmp; for (int i=0; i<=x.used/2; i++) // www.itmathrepetitor.ru { tmp=x.a[i]; x.a[i]=x.a[x.used-i-1]; x.a[x.used-1-i]=tmp; } } void input(nlong &x) { char c=0; x.used=0; // www.itmathrepetitor.ru while (c!=13) { c=getch(); x.a[x.used]=(int)c-48; x.used++; cout<<c; } x.used--; reverse(x); cout<<endl; } void itmathrepetitor_ru() { nlong x,y; cout<<"input long number x: "; input(x); cout<<"input long number y: "; input(y); // www.itmathrepetitor.ru int cmp=compare(x,y); if (cmp<0) cout<<"x<y"; else if (cmp>0) cout<<"x>y"; else // www.itmathrepetitor.ru cout<<"x=y"; } |