И предлагаю вашему вниманию программу,
которую я переделал с QBasic, но на форуме
она не привлекла внимания.
Эта программа делит два 100-значных числа и получает такой же длины третье.
Числа представлены в виде массивов. В нулевом месте массивов стоит порядок чисел
(все остальное - мантисса). Алгоритм программы - это поразрядное вычитание.
Очередная цифра определяется так: Если нельзя вычесть ни разу - цифра 0,
если можно N раз - цифра N (N<10). Программа проверена под Windows XP.
Код: Выбрать все
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#pragma argsused
int main(int args, char* argv[])
{
int a[101];
int b[101];
int c[101];
int e,i,j,k;
for(i=0;i<101;i++) a[i]=b[i]=c[i]=0; c[0]=a[0]-b[0]; for(i=1;i<101;i++) { if (a[i]==b[i]) goto o11; if (a[i]>b[i]) goto o22;
c[0]-=1;
a[1]=10*a[1]+a[2];
for(j=2;j<100;j++) a[j]=a[j+1]; a[100]=0; goto o22;o11: };o22: for(k=1;k<101;k++) { for(e=0;e<10;e++) { for(i=1;i<101;i++) { if(a[i]==b[i]) goto o33; if(a[i]>b[i] goto o44;
a[1]=10*a[1]+a[2];
for(j=2;j<100;j++) a[j]=a[j+1]; a[100]=0; c[k]=e; goto o77;o33: }o44: for(i=1;i<101;i++) a[i]-=b[i]; for(i=100;i>1;i--)
{
if(a[i]<0) { a[i]+=10; a[i-1]-=1; } } }o77: }; return 0;}
конечно у меня куча вопросов
1) что из себя представляет эта программа? (это моя первая на Си программа)
2) как ее улучшить?
3) как обнулить массив не используя цикл?
4) как остановить программу для просмотра?
я использовал cin, я еще не знаю какой h-файл подключить.
Особая благодарность folk !!!!! Он нашел нужные слова. СПАСИБО!!