Advertisement
barbos01

Nr mari

Apr 14th, 2021
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void afisare(int vector[201])
  6. {
  7.     for(int i = vector[0]; i > 0; i--)
  8.         printf("%d", vector[i]);
  9.  
  10. }
  11.  
  12. void suma(int numar1[201], int numar2[201], int suma_mare[201])
  13. {
  14.  
  15.     int t = 0, n;
  16.     if(numar1[0] < numar2[0])
  17.     {
  18.         n = numar2[0];
  19.         for(int i = numar1[0] + 1; i <= numar2[0]; i++)
  20.             numar1[i] = 0;
  21.     }
  22.     else
  23.     {
  24.         n = numar1[0];
  25.         for(int i = numar2[0] + 1; i <= numar1[0]; i++)
  26.             numar2[i] = 0;
  27.     }
  28.     int i;
  29.     for(i = 1; i <= n; i++)
  30.     {
  31.         int cifra = numar1[i] + numar2[i] + t;
  32.         suma_mare[i] = cifra % 10;
  33.         t = cifra/10;
  34.     }
  35.     if(t)
  36.         suma_mare[i] = t;
  37.     else
  38.         i--;
  39.     suma_mare[0] = i;
  40.     afisare(suma_mare);
  41.  
  42.  
  43. }
  44. void diferenta(int numar1[201], int numar2[201], int diferenta_mare[201]){
  45.  
  46.     if(numar1[0] < numar2[0])
  47.         diferenta(numar2, numar1, diferenta_mare);
  48.     else{
  49.  
  50.         int i, t = 0;
  51.         for(i = 1; i <= numar1[0]; i++){
  52.  
  53.             diferenta_mare[i] = numar1[i] - numar2[i] + t;
  54.             if(diferenta_mare[i] < 0){
  55.  
  56.                 diferenta_mare[i] += 10;
  57.                 t = -1;
  58.             }
  59.             else
  60.                 t = 0;
  61.         }
  62.         i--;
  63.         while(i && !diferenta_mare[i])
  64.             i--;
  65.         if(i == 0){
  66.             printf("0");
  67.         }
  68.         else{
  69.             diferenta_mare[0] = i;
  70.             afisare(diferenta_mare);
  71.         }
  72.  
  73.     }
  74.  
  75. }
  76.  
  77. void inmultire(int a[200], int numar){
  78.     if(numar == 0){
  79.         printf("0");
  80.         return 0;
  81.     }
  82.     int i, t = 0;
  83.     for(i = 1; i <= a[0]; i++){
  84.  
  85.         a[i] = a[i] * numar + t;
  86.         t = a[i] / 10;
  87.         a[i] = a[i] % 10;
  88.     }
  89.     while(t){
  90.         a[++a[0]] = t % 10;
  91.         t /= 10;
  92.     }
  93.     afisare(a);
  94.     printf("\n");
  95.  
  96.  
  97. }
  98.  
  99.  
  100.  
  101. int main()
  102. {
  103.  
  104.     int a[200] = {0}, b[200] = {0}, s[200] = {0}, d[200] = {0},scalar, chose, ok = 1;
  105.     char x[200], y[200], z[200];
  106.     printf("Primul numar = ");
  107.     gets(x);
  108.     printf("Al doilea numar = ");
  109.     gets(y);
  110.     a[0] = strlen(x);
  111.     b[0] = strlen(y);
  112.     for(int i = strlen(x) - 1; i >= 0; i--)
  113.     {
  114.         a[strlen(x) - i] = (int)(x[i] - '0');
  115.     }
  116.     for(int i = strlen(y) - 1; i >= 0; i--)
  117.     {
  118.         b[strlen(y) - i] = (int)(y[i] - '0');
  119.     }
  120.     int k;
  121.     do{
  122.         printf("\n<0>Iesire din program\n");
  123.         printf("<1>Suma celor 2 numere\n");
  124.         printf("<2>Diferenta celor 2 numere\n");
  125.         printf("<3>Produsul unui numar oricat de mare cu o cifra\n");
  126.         printf("Alege o optiune: ");
  127.         scanf("%d", &k);
  128.         switch(k){
  129.  
  130.             case 0: exit(0);
  131.             case 1: suma(a, b, s); printf("\n");break;
  132.             case 2: diferenta(a, b, d);printf("\n");break;
  133.             case 3: printf("Introduceti scalarul: ");scanf("%d", &scalar);printf("Cu care dintre numere 1 sau 2?: ");scanf("%d", &chose);
  134.                     while(ok){if(chose == 1){inmultire(a, scalar);break;}else if(chose == 2){inmultire(b,scalar);break;}else {printf("Alegeti unul dintre cele doua numere 1 sau 2!: ");scanf("%d", &chose);}}
  135.  
  136.         }
  137.  
  138.  
  139.  
  140.     }while(k);
  141.  
  142.  
  143.     return 0;
  144. }
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement