Guest User

Untitled

a guest
Jan 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void lerVetor(int v[]){
  4.  
  5.     int i=0;
  6.  
  7.     do{
  8.         scanf("%d", &v[i]);
  9.         i++;
  10.     }while(v[i-1]!=-1);
  11. }
  12.  
  13. void imprimirVetor(int v[]){
  14.  
  15.     int i=0;
  16.  
  17.     while(v[i]!=-1){
  18.         printf("%d", v[i]);
  19.         i++;
  20.     }
  21.     printf("\n");
  22. }
  23.  
  24. void inverter(int v[]){
  25.  
  26.     int i=0;
  27.     int j=0;
  28.     int aux[102];
  29.  
  30.     while(v[i]!=-1){
  31.         i++;
  32.     }
  33.     i--;
  34.  
  35.     while(i>=0){
  36.         aux[j]=v[i];
  37.         i--;
  38.         j++;
  39.     }
  40.  
  41.     for(i=0;i<j;i++){
  42.         v[i]=aux[i];
  43.     }
  44.  
  45.     v[i]=-1;
  46. }
  47.  
  48. void somarVetor(int v1[], int v2[], int soma[]){
  49.  
  50.     int i,j,k;
  51.     int care=0;
  52.  
  53.     i=j=k=0;
  54.  
  55.     while(v1[i]!=-1 || v2[j]!=-1){
  56.         if(v1[i]!=-1 && v2[j]!=-1){
  57.             soma[k]=(v1[i]+v2[j]+care)%10;
  58.             care=(v1[i]+v2[j]+care)/10;
  59.             i++;j++;k++;
  60.         }
  61.         else if(v2[j]==-1){
  62.             soma[k]=(v1[i]+care)%10;
  63.             care=(v1[i]+care)/10;
  64.             i++;
  65.             k++;
  66.         }
  67.         else if(v1[i]==-1){
  68.             soma[k]=(v2[j]+care)%10;
  69.             care=(v2[j]+care)/10;
  70.             j++;
  71.             k++;
  72.         }
  73.     }
  74.     if(care==1){ soma[k]=1; soma[k+1]=-1;}
  75.     else soma[k]=-1;
  76. }
  77.  
  78. void copiarVetor(int v1[], int v2[], int n){
  79.  
  80.     int i;
  81.  
  82.     for(i=0;i<n;i++) v1[i]=v2[i];
  83.  
  84. }
  85.  
  86. void zerarVetor(int v[], int n){
  87.     int i;
  88.  
  89.     for(i=0;i<n;i++) v[i]=0;
  90. }
  91.  
  92. void multiplicar(int v1[], int v2[], int mult[]){
  93.  
  94.     int i, j;
  95.     int care=0;
  96.     int aux1[102]={0}, aux2[102]={0};
  97.  
  98.     for(j=0;v1[j]!=-1;j++){
  99.         care=0;
  100.         if(v1[j]==0) continue;
  101.         for(i=0;v2[i]!=-1;i++){
  102.             aux1[j+i]=(v1[j]*v2[i]+care)%10;
  103.             care=(v1[j]*v2[i]+care)/10;
  104.         }
  105.         if(care!=0) { aux1[j+i]=care; aux1[j+i+1]=-1;}
  106.         else aux1[j+i]=-1;
  107.  
  108.         if(j>0) copiarVetor(aux2, mult,102);
  109.         else { aux2[0]=0; aux2[1]=-1; }
  110.         somarVetor(aux1, aux2, mult);
  111.         zerarVetor(aux1, 100);
  112.         zerarVetor(aux2, 100);
  113.     }
  114. }
  115.  
  116. int main(){
  117.  
  118.     int n1[51]={0}, n2[51]={0};
  119.     int soma[102], mult[102]={0};
  120.  
  121.     lerVetor(n1);
  122.     lerVetor(n2);
  123.     imprimirVetor(n1);
  124.     imprimirVetor(n2);
  125.     inverter(n1);
  126.     inverter(n2);
  127.     somarVetor(n1, n2, soma);
  128.     inverter(soma);
  129.     imprimirVetor(soma);
  130.     multiplicar(n1,n2,mult);
  131.     inverter(mult);
  132.     imprimirVetor(mult);
  133.  
  134.     return 0;
  135. }
Add Comment
Please, Sign In to add comment