Advertisement
barbos01

Untitled

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