Advertisement
icatalin

Lab 3 19.10.2019 TEMA + probleme lucrate pana acum

Oct 12th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. void numarParitate (int x)
  6. {
  7.  
  8.     //verificare daca un numar e par sau impar
  9.  
  10.     if (x&1)
  11.         printf("x este impar");
  12.     else
  13.         printf("x este par");
  14. }
  15.  
  16. void problema1Lab3 ()
  17. {
  18.     int x;
  19.  
  20.     //Afisarea reprezentarii pe biti a unui numar.
  21.      printf("\nIntroduceti o valore pentru x.\n");
  22.      scanf("%d",&x);
  23.  
  24.     int a=1;
  25.  
  26.         a=a<<8; // pe cati biti se face reprezentarea.
  27.  
  28.         while(a)
  29.         {
  30.             if (x&a)
  31.                 printf("%d",1);
  32.             else
  33.                 printf("%d",0);
  34.  
  35.             a=a>>1;
  36.         }
  37. }
  38.  
  39. void problema2Lab3 ()
  40. { // n - bit, x - nr
  41.     int x;
  42.  
  43.      printf("\nIntroduceti o valore pentru x.\n");
  44.      scanf("%d",&x);
  45.  
  46.     int n;
  47.     printf("Numarul x este %d. Introduceti bitul n. \n",x);
  48.     scanf("%d",&n);
  49.  
  50.     //punctul a: Sa se afiseze bitul n din x
  51.  
  52.     int xA=x;
  53.  
  54.     xA=xA>>n;
  55.     printf("\npunctul a): bitul n\n%d \n",xA&1);
  56.  
  57.  
  58.     // punctul b): numărul x în care se seteaza bitul n
  59.  
  60.     int xB=x;
  61.     printf("punctul b): nr x in care se seteaza bitul n \n");
  62.  
  63.     int bitB=1;
  64.  
  65.     bitB = bitB  << n;
  66.  
  67.     xB = xB | bitB;
  68.  
  69.     printf("%d \n",xB);
  70.  
  71.     // punctul c): numărul x în care se șterge bitul n
  72.  
  73.  
  74.     int xC=x;
  75.  
  76.     printf("punctul c): numarul x in care se sterge bitul n \n");
  77.  
  78.     int bitC=1;
  79.  
  80.     bitC = bitC << n;
  81.  
  82.  // metoda 1  if ((xC & bitC) == bitC)
  83.  //    xC = xC - bitC;
  84.  
  85.     xC = xC & (~bitC);
  86.  
  87.     printf("%d \n",xC);
  88.  
  89.  
  90.     // punctul d): numărul x în care se complementeaza bitul n
  91.  
  92.     int xD=x;
  93.  
  94.     printf("punctul d): numarul x in care se complementeaza bitul n \n");
  95.  
  96.     int bitD=1;
  97.  
  98.     bitD = bitD << n;
  99.  
  100.     xD = xD ^ bitD;
  101.  
  102.     printf("%d \n",xD);
  103.  
  104.  
  105. }
  106.  
  107. void problema3Lab3()
  108. {
  109.     int x,y,n,p; // p - pozitia p din x; n - ultimii n biti din y
  110.  
  111.     printf("Introduceti valorea pentru x si y, in ordine. Apoi introduceti si p - pozitia din x si n - ultimii biti din y. \n");
  112.     scanf("%d %d", &x,&y);
  113.     scanf("%d %d", &p, &n);
  114.  
  115.     int div=pow(2,n);
  116.     int nBits=y%div;
  117.  
  118.     nBits = nBits << p;
  119.  
  120.     x = x + nBits;
  121.  
  122.     printf("Valorea noului x este... %d", x);
  123.  
  124. }
  125.  
  126. void problema4Lab3()
  127. {
  128.     //Scrieți un program care primește ca input de la tastatură scrierea unui număr în baza 2 și
  129. //calculează direct scrierea acestuia în baza 16 (nu mai trece prin baza intermediară 10)
  130.  
  131.     int x,v[100]={0},i=0,nr;
  132.     printf("Introduceti un numar scris in baza 2.\n");
  133.     scanf("%d",&x);
  134.  
  135.     while (x)
  136.     {
  137.         nr=x%10000;
  138.         printf("nr= %d \n",nr);
  139.         int putere=0;
  140.  
  141.         while (nr)
  142.         {
  143.             v[i] = v[i] + (nr%10)*pow(2,putere);
  144.             putere++;
  145.  
  146.             printf("v[%d] = %d \n",i,v[i]);
  147.  
  148.             nr/=10;
  149.         }
  150.  
  151.         i++;
  152.  
  153.     x/=10000;
  154.  
  155.     }
  156.  
  157.     for (i=7; i>=0; i--)
  158.         if (v[i]<10)
  159.         printf("%d ",v[i]);
  160.     else
  161.         switch (v[i])
  162.     {
  163.     case 10:
  164.             printf("A");
  165.         break;
  166.     case 11:
  167.             printf("B");
  168.         break;
  169.     case 12:
  170.             printf("C");
  171.         break;
  172.     case 13:
  173.             printf("D");
  174.         break;
  175.     case 14:
  176.             printf("E");
  177.         break;
  178.     case 15:
  179.             printf("F");
  180.         break;
  181.     }
  182.  
  183. }
  184.  
  185. int main()
  186. {
  187.  int nr;
  188.  printf("Alegeti numarul problemei. (1,2,3,4)\n");
  189.  scanf("%d",&nr);
  190.  
  191.  switch (nr)
  192.  {
  193.     case 1:
  194.         problema1Lab3();
  195.     break;
  196.  
  197.     case 2:
  198.         problema2Lab3();
  199.     break;
  200.  
  201.     case 3:
  202.         problema3Lab3();
  203.     break;
  204.  
  205.     case 4:
  206.         problema4Lab3();
  207.     break;
  208.  
  209.     default:
  210.         printf("Nu ati introdus o optiune valida.");
  211.         return;
  212.  
  213.  }
  214.  
  215.  
  216.  
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement