Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void delenie(char a[], char b[], char c[], char d[]) // a/b=c
- {
- int signa = 1;
- int signb = 1;
- if (a[N - 1] >= p / 2) // если первая цифра доп.кода больше половины основания системы исчисления, то число было отрицательным.
- {
- signa = -1;
- minus(a); // доп код доп. кода числа есть число
- }
- if (b[N - 1] >= p / 2) // если первая цифра доп.кода больше половины основания системы исчисления, то число было отрицательным.
- {
- signb = -1;
- minus(b); // доп код доп. кода числа есть число
- }
- for (int i = 0; i < N; i++)
- {
- c[i] = 0;
- d[i] = 0;
- }
- char tmp[N + 1];
- char up[N + 1];
- char down[N + 1];
- char ost[N + 1];
- char proverka[N + 1];
- char check[N + 1];
- for (int i = 0; i < N; i++)
- {
- up[i] = a[i];
- down[i] = 0;
- }
- int flag = 0;
- int k = 0;
- int c1;
- int c2;
- while (1 == 1)
- {
- c1 = N - 1;
- //printf("\nUp = ");
- //output(up);
- // printf("\nDown = ");
- //output(down);
- add(up, down, tmp);
- popolam(tmp);
- //printf("\nSredneye = ");
- // output(tmp);
- //printf("\nProverka = ");
- umnozhenie(tmp, b, proverka);
- // output(proverka);
- k = cmp(proverka, a);
- // printf("\n k = %d ", k);
- if (k == 1)
- {
- for (int i = 0; i < N; i++)
- up[i] = tmp[i];
- }
- if (k == -1)
- {
- for (int i = 0; i < N; i++)
- down[i] = tmp[i];
- }
- if (k == 0)
- {
- if (signa*signb==-1)
- minus (tmp);
- for (int i = 0; i < N; i++)
- {
- c[i] = tmp[i];
- d[i] = 0;
- }
- // printf("Break");
- break;
- }
- sub(a, proverka, ost);
- //printf("\nOstatok = ");
- //output(ost);
- for (; c1 >= 0; c1--)
- if (ost[c1])
- break;
- int c2 = N - 1;
- for (; c2 >= 0; c2--)
- if (b[c2])
- break;
- while (ost[c1] == b[c2])
- {
- c1--;
- c2--;
- }
- //printf("\nDlya ostatka: OST = %d B= %d", ost[c1], b[c2]);
- if (ost[c1]<b[c2] && c1 == c2 || c2>c1)
- {
- for (int i = 0; i < N; i++)
- {
- c[i] = tmp[i];
- d[i] = ost[i];
- }
- if (signa*signb == -1)
- minus(c);
- if (signa == -1)
- minus(d);
- break;
- }
- //_getch();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement