Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by To4iK ( 16 years ago )
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>


char first_arg[100],second_arg[100],res[10000],op,diff_arg[100];
int c=0,diff;
char* summ(char* A,char* B)
{ 
 for(int i=strlen(res)-1; i>=0; i--)
   {
    res[i] = A[i]+B[i]-'0'+c;
    (res[i]-'0'>=10)?((res[i]-=10), c=1):(c=0);
   }
   if(c==1)
   {
    for (int k=(strlen(res))-1; k>-1; k--)
    {
     res[k+1]=res[k];
    }
    res[0]='1';
   }
   return res;
}
char* razn(char* A,char* B)
{
for(int i=strlen(res)-1; i>=0; i--)
   {
    if(A[i]-B[i]>=0)
    {
     res[i] = A[i]-B[i]+'0';
    }
    else 
     for(int j=i-1;j>=0;j--)
     {
      if(A[j]>'0')
      {
       A[j]-=1;
       res[i] = A[i]-B[i]+'0'+10;
       for(int k=j+1;k<i;k++)
       {
        A[k]='9';
       }
       break;
      }
     }
   }
return res;
}
void main()
{
 puts("enter a,b (same length)");
 puts("a:"); gets(first_arg);
 puts("operation:"); scanf("%c", &op;);
 fflush(stdin);
 puts("b:"); gets(second_arg);

 for(int i=0; i<((strlen(first_arg)<strlen(second_arg))?strlen(second_arg):strlen(first_arg)); i++)
 {
  res[i] = '0';
  diff_arg[i]='0';
 }
 diff=strlen(first_arg)-strlen(second_arg);
 if (diff >= 0)
 {
  for(int i=strlen(second_arg);i>-1;i--)
  {
   diff_arg[i+abs(diff)]=second_arg[i];
   (abs(diff)!=0)?(diff_arg[i]='0'):(diff_arg[i]=diff_arg[i]);
  }
 }
 if (diff < 0)
 {
  for(int i=strlen(first_arg);i>-1;i--)
  {
   diff_arg[i+abs(diff)]=first_arg[i];
   diff_arg[i]='0';
  }
 }
 switch (op)
 {
 case '+': {
  if(diff>=0)
  {
   strcpy(res,summ(first_arg,diff_arg));
  }
  if(diff<0)
  {
   strcpy(res,summ(second_arg,diff_arg));
  }
     }break;


 case '-':{
  if(diff==0)
  {
   for(int i=0;i<strlen(first_arg);i++)
   { 
    if(first_arg[i]<diff_arg[i])
    {
     strcpy(res,razn(diff_arg,first_arg));
     for (int k=(strlen(res))-1; k>-1; k--)
     {
      res[k+1]=res[k];
     }
     res[0]='-';break;
    }
    for(int i=0;i<strlen(first_arg);i++)
    { 
     if(first_arg[i]>diff_arg[i])
     {
      strcpy(res,razn(first_arg,diff_arg));
      break;
     }
    }
   }break;
  }
  if(diff>0)
  {
   strcpy(res,razn(first_arg,diff_arg));
  }
  if(diff<0)
  {
   strcpy(res,razn(second_arg,diff_arg));
   for (int i=(strlen(res))-1; i>-1; i--)
   {
    res[i+1]=res[i];
   }
   res[0]='-';
  }
    }break;
 case '*':{
  for(int i=0; i<(strlen(first_arg)*strlen(second_arg); i++)
  {
   res[i] = '0';
  }

  for(int i=;i>-1;i--)
  {
   strcpy(res,summ(res,first_arg));
  }

    }



 }



 puts("=");
 printf("%s\n",res);
 getch();

}

 

Revise this Paste

Your Name: Code Language: