Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.66 KB | None | 0 0
  1. // Problema 1.(Tablou 50 elemente)
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #define lmax 52
  6.  
  7. int a[lmax],na,b[lmax],nb,i,j;
  8.  
  9. int maxim(int a, int b)
  10. {
  11.     if(a>b)
  12.         return a;
  13.     else
  14.         return b;
  15. }
  16.  
  17. int modul(int a)
  18. {
  19.     if(a>0)
  20.         return a;
  21.     else
  22.         return -a;
  23. }
  24.  
  25. void read()
  26. {
  27.     FILE *f=fopen("fisier.in","r");
  28.     fscanf(f,"%d",&na);
  29.     for(i=1;i<=na;i++)
  30.         fscanf(f,"%d",&a[i]);
  31. }
  32.  
  33. void show(int a[],int na)
  34. {
  35.     for(i=1;i<=na;i++)
  36.         printf("%d ",a[i]);
  37.     printf("\n");
  38. }
  39.  
  40. void adauga_Fara_Tablou()
  41. {
  42.     for(i=1;i<=na;i++)
  43.     {
  44.         if(a[i]-a[i+1] < 10)
  45.         {
  46.             na++;
  47.             for(j=na;j>=i+2;j--)
  48.                 a[j]=a[j-1];
  49.             a[i+1]=maxim( modul(a[i]), modul(a[i+1]));
  50.             i++;
  51.         }
  52.     }
  53. }
  54.  
  55. void adauga_Cu_Tablou()
  56. {
  57.     for(i=1;i<=na;i++)
  58.     {
  59.         b[++nb]=a[i];
  60.  
  61.         if(a[i]-a[i+1] < 10)
  62.         {
  63.             nb++;
  64.             b[nb]=maxim( modul(a[i]), modul(a[i+1]));
  65.         }
  66.     }
  67. }
  68.  
  69. int main()
  70. {
  71.     read();
  72.     show(a,na);
  73.     adauga_Cu_Tablou();
  74.     show(b,nb);
  75.     return 0;
  76. }
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. // 2. Problema cu multimile
  84.  
  85. #include <stdio.h>
  86. #include <stdlib.h>
  87. #define lmax 52
  88.  
  89. int a[lmax],b[lmax],na,nb,i,j;
  90.  
  91. int intersectie[lmax], reuniune[2*lmax], ni, nr;
  92.  
  93. int contine(int a[],int na,int x)
  94. {
  95.     int i;
  96.     for(i=1;i<=na;i++)
  97.         if(a[i]==x)
  98.         return 1;
  99.     return 0;
  100. }
  101.  
  102. void read()
  103. {
  104.     FILE *f=fopen("fisier.in","r");
  105.  
  106.     //Citirea primei multimi
  107.     fscanf(f,"%d",&na);
  108.     for(i=1;i<=na;i++)
  109.         fscanf(f,"%d",&a[i]);
  110.  
  111.     //Citirea celei de-a doua multimi
  112.     fscanf(f,"%d",&nb);
  113.     for(i=1;i<=nb;i++)
  114.         fscanf(f,"%d",&b[i]);
  115. }
  116.  
  117. void show(int a[], int n)
  118. {
  119.     for(i=1;i<=n;i++)
  120.         printf("%d ",a[i]);
  121.     printf("\n");
  122. }
  123.  
  124. void solve_Intersection()
  125. {
  126.     int gasit=0;
  127.     for(i=1;i<=na;i++)
  128.     {
  129.         gasit=0;
  130.         for(j=1;j<=nb;j++)
  131.             if(b[j]==a[i])
  132.             {gasit=1;break;}
  133.  
  134.         if(gasit)
  135.             intersectie[++ni]=a[i];
  136.     }
  137. }
  138.  
  139. void solve_Reunion()
  140. {
  141.     for(i=1;i<=na;i++)
  142.         if(!contine(reuniune,nr,a[i]))
  143.         reuniune[++nr]=a[i];
  144.  
  145.      for(i=1;i<=nb;i++)
  146.         if(!contine(reuniune,nr,b[i]))
  147.         reuniune[++nr]=b[i];
  148. }
  149.  
  150. void solve_CartesianProduct()
  151. {
  152.     for(i=1;i<=na;i++)
  153.         for(j=1;j<=nb;j++)
  154.             printf("%d %d\n",a[i],b[j]);
  155. }
  156.  
  157. int main()
  158. {
  159.     read();
  160.     solve_Intersection();
  161.     show(intersectie,ni);
  162.     solve_Reunion();
  163.     show(reuniune,nr);
  164.     solve_CartesianProduct();
  165.     return 0;
  166. }
  167.  
  168.  
  169.  
  170.  
  171.  
  172. // 3. Problema cu matricile
  173. #include <stdio.h>
  174. #include <stdlib.h>
  175. #define lmax 52
  176.  
  177. int a[lmax][lmax],b[lmax][lmax],na,nb,ma,mb;
  178. int c[lmax][lmax],nc,mc;
  179.  
  180. void show(int a[lmax][lmax], int na, int ma)
  181. {
  182.     int i,j;
  183.     for(i=1;i<=na;i++)
  184.        {
  185.            for(j=1;j<=ma;j++)
  186.             printf("%d ",a[i][j]);
  187.            printf("\n");
  188.        }
  189.     printf("\n");
  190. }
  191.  
  192. void clear(int a[lmax][lmax],int na,int ma)
  193. {
  194.     int i,j;
  195.     for(i=1;i<=na;i++)
  196.         for(j=1;j<=ma;j++)
  197.         a[i][j]=0;
  198. }
  199.  
  200. void read_matrice( int a[lmax][lmax], int na, int ma )
  201. {
  202.     int i,j;
  203.     for(i=1;i<=na;i++)
  204.         for(j=1;j<=ma;j++)
  205.         {printf("v[%d][%d]= ",i,j);scanf("%d",&a[i][j]);};
  206. }
  207.  
  208. void read_matrice_fisier (FILE *f,int a[lmax][lmax], int na, int ma )
  209. {
  210.     int i,j;
  211.     for(i=1;i<=na;i++)
  212.         for(j=1;j<=ma;j++)
  213.         fscanf(f,"%d",&a[i][j]);
  214. }
  215. void suma_matrici( int a[lmax][lmax], int b[lmax][lmax], int nn, int mm )
  216. {
  217.     int i,j;
  218.  
  219.     nc=nn;
  220.     mc=mm;
  221.  
  222.     clear(c,nc,mc);
  223.  
  224.     for(i=1;i<=nc;i++)
  225.         for(j=1;j<=mc;j++)
  226.         c[i][j]=a[i][j]+b[i][j];
  227. }
  228.  
  229. void produs_matrici(int a[lmax][lmax], int na, int ma, int b[lmax][lmax], int nb, int mb )
  230. {
  231.     int i,j,k;
  232.  
  233.     nc=na;
  234.     mc=mb;
  235.  
  236.     if(ma==nb)
  237.     {
  238.         for(i=1;i<=na;i++)
  239.             for(j=1;j<=mb;j++)
  240.                 for(k=1;k<=ma;k++)
  241.                 c[i][j]+=a[i][k]*b[k][j];
  242.     }
  243. }
  244.  
  245. void show_helpMenu()
  246. {
  247.     printf("**************************\n");
  248.     printf("R: Read matrix\n");
  249.     printf("D: Display matrix\n");
  250.     printf("S: Sum between matrices\n");
  251.     printf("P: Product between matrices\n");
  252.     printf("**************************\n\n");
  253. }
  254.  
  255. void handleInput(char cr)
  256. {
  257.     int i;
  258.     char cc=NULL;
  259.     switch(cr)
  260.     {
  261.     case 'R':
  262.         printf("Citeste matricea a sau b?");
  263.         while( (int)cc == 10 || cc==NULL)scanf("%c",&cc);
  264.         if(cc=='a' || cc=='A')
  265.         {
  266.             printf("Dimensiunile matricei: (n si m )");
  267.             scanf("%d %d",&na,&ma);
  268.             read_matrice(a,na,ma);
  269.         }
  270.         else
  271.             if(cc=='b' || cc=='B')
  272.         {
  273.             printf("Dimensiunile matricei: (n si m)");
  274.             scanf("%d %d",&nb,&mb);
  275.             read_matrice(b,nb,mb);
  276.         }
  277.         break;
  278.     case 'D':
  279.         printf("Afiseaza matricea  a sau b?");
  280.         while( (int)cc == 10 || cc==NULL)scanf("%c",&cc);
  281.         if(cc=='a' || cc=='A')
  282.         {
  283.             show(a,na,ma);
  284.         }
  285.         else
  286.             if(cc=='b' || cc=='B')
  287.         {
  288.            show(b,nb,mb);
  289.         }
  290.         break;
  291.     case 'S':
  292.         if(na==nb && ma==mb)
  293.         {
  294.         printf("Suma celor doua matrici: \n");
  295.         suma_matrici(a,b,na,ma);
  296.         show(c,nc,mc);
  297.         }
  298.         else
  299.         {
  300.             printf("Operatia nu se poate efectua");
  301.         }
  302.         break;
  303.     case 'P':
  304.         if(ma==nb)
  305.         {
  306.             printf("Produsul celor doua matrici:\n");
  307.             produs_matrici(a,na,ma,b,nb,mb);
  308.             show(c,nc,mc);
  309.         }
  310.         break;
  311.     default:
  312.         break;
  313.     }
  314. }
  315.  
  316.  
  317. void game_loop()
  318. {
  319.     char c;
  320.     show_helpMenu();
  321.  
  322.     while(1)
  323.     {
  324.  
  325.          if( (int)c != 10 )
  326.          {
  327.  
  328.              printf("Introduceti comanda :\n");
  329.          }
  330.         scanf("%c",&c);
  331.         if(c=='X')
  332.             break;
  333.         else
  334.         handleInput(c);
  335.     }
  336. }
  337.  
  338.  
  339. int main()
  340. {
  341.     game_loop();
  342.     return 0;
  343. }
  344.  
  345.  
  346. //4 . (Problema cu matrici transpuse)
  347. #include <stdio.h>
  348. #include <stdlib.h>
  349. #define lmax 5
  350.  
  351. int a[lmax][lmax],b[lmax*4][lmax*4],n;
  352.  
  353. void read()
  354. {
  355.     int i,j;
  356.  
  357.     printf("n= ");scanf("%d",&n);
  358.     for(i=1;i<=n;i++)
  359.         for(j=1;j<=n;j++)
  360.     {
  361.         printf("a[%d][%d]= ",i,j);
  362.         scanf("%d",&a[i][j]);
  363.     }
  364. }
  365.  
  366. void solve()
  367. {
  368.     int i,j;
  369.     for(i=1;i<=n;i++)
  370.         for(j=1;j<=n;j++)
  371.     {
  372.         b[i][j]=b[n+i][n+j]=a[j][i];
  373.         b[n+i][j]=b[i][n+j]=a[i][j];
  374.     }
  375. }
  376.  
  377. void show()
  378. {
  379.     int i,j;
  380.  
  381.     for(i=1;i<=2*n;i++)
  382.     {
  383.         for(j=1;j<=2*n;j++)
  384.             printf("%d ",b[i][j]);
  385.         printf("\n");
  386.     }
  387. }
  388.  
  389. int main()
  390. {
  391.     read();
  392.     solve();
  393.     show();
  394.     return 0;
  395. }
  396.  
  397.  
  398. // 5.
  399. #include <stdio.h>
  400. #include <stdlib.h>
  401. #define lmax 5
  402.  
  403. int a[lmax][lmax],n,maximum,minimum,suma,prod=1;
  404.  
  405. int maxim(int a,int b)
  406. {
  407.     if(a>b)
  408.         return a;
  409.     else
  410.         return b;
  411. }
  412.  
  413. void schimb(int *a, int *b)
  414. {
  415.     int *temp=*a;
  416.     *a=*b;
  417.     *b=temp;
  418. }
  419. void read()
  420. {
  421.     int i,j;
  422.  
  423.     FILE *f=fopen("fisier.in","r");
  424.     //printf("n= ");
  425.     fscanf(f,"%d",&n);
  426.     for(i=1;i<=n;i++)
  427.         for(j=1;j<=n;j++)
  428.     {
  429.        // printf("a[%d][%d]= ",i,j);
  430.         fscanf(f,"%d",&a[i][j]);
  431.     }
  432. }
  433. void schimb_regiuni(int r1,int r2)
  434. {
  435.     int i,j;
  436.  
  437.     if( (r1==1 && r2==3) || (r1==3 && r2==1) )
  438.     {
  439.         for(i=1;i<=n/2;i++)
  440.             for(j=i+1;j<=n-i;j++)
  441.             schimb(&a[i][j],&a[n-i+1][j]);
  442.     }
  443.     else
  444.         if( (r1==2 && r2==4) || (r1==4 && r2==2) )
  445.     {
  446.         for(i=2;i<=n-1;i++)
  447.             for(j=1;(i+j)<n+1;j++)
  448.                 schimb(&a[i][j],&a[i][n-j+1]);
  449.     }
  450. }
  451.  
  452. void solve_A()
  453. {
  454.     int i,j;
  455.     maximum=minimum=a[1][1];
  456.     for(i=1;i<=n;i++)
  457.         for(j=1;j<=n;j++)
  458.         if( (i>j) && (i+j)>n+1 ) // regiunea 1
  459.     {
  460.         if(a[i][j]>maximum)
  461.             maximum=a[i][j];
  462.     }
  463.     else
  464.         if( (i>j) && (i+j)<n+1 ) //regiunea 2
  465.     {
  466.         if(a[i][j]<minimum)
  467.             minimum=a[i][j];
  468.     }
  469.     else
  470.         if( (i<j) && (i+j)<n+1 ) //regiunea 3
  471.     {
  472.         suma+=a[i][j];
  473.     }
  474.     else
  475.         if ( (i<j) && (i+j)>n+1 )
  476.         {
  477.             prod*=a[i][j];
  478.         }
  479.  
  480.     printf("Maximul din regiunea 1 :  %d\n",maximum);
  481.      printf("Minimul din regiunea 2 :  %d\n",minimum);
  482.       printf("Suma elementelor din regiunea 3:  %d\n",suma);
  483.        printf("Produsul elementelor din regiunea 4 :  %d\n\n",prod);
  484. }
  485.  
  486. void show()
  487. {
  488.     int i,j;
  489.  
  490.     for(i=1;i<=n;i++)
  491.     {
  492.         for(j=1;j<=n;j++)
  493.             printf("%d ",a[i][j]);
  494.         printf("\n");
  495.     }
  496. }
  497.  
  498. void solve_B()
  499. {
  500.     schimb_regiuni(1,3);
  501.     printf("\nDupa schimbarea regiunilor 1 si 3:\n");
  502.     show();
  503.     schimb_regiuni(1,3);//o aducem la forma initiala
  504. }
  505.  
  506. void solve_C()
  507. {
  508.     schimb_regiuni(2,4);
  509.     printf("\nDupa schimbarea regiunilor 2 si 4:\n");
  510.     show();
  511.     schimb_regiuni(2,4);//o aducem la forma initiala
  512. }
  513.  
  514. void solve_D()
  515. {
  516.     schimb_regiuni(2,4);
  517.     schimb_regiuni(1,3);
  518.     printf("\nDupa schimbarea regiunilor 1 si 3 , 2 si 4\n");
  519.     show();
  520. }
  521.  
  522. int main()
  523. {
  524.     read();
  525.     show();
  526.     solve_A();
  527.     solve_B();
  528.     solve_C();
  529.     solve_D();
  530.     return 0;
  531. }
  532.  
  533. // 6. Problema cu sortarea prin insertie
  534. #include <stdio.h>
  535. #include <stdlib.h>
  536. #define lmax 50
  537.  
  538. int a[lmax],n,na;
  539.  
  540. void insereaza(int a[],int *na,int x)
  541. {
  542.     int poz=0,i=1,j;
  543.  
  544.     for(i=*na;i>=1;i--)
  545.         if(x>a[i])
  546.     {
  547.         (*na)+=1;
  548.         for(j=*na;j>=i+2;j--)
  549.             a[j]=a[j-1];
  550.         a[i+1]=x;
  551.         break;
  552.     }
  553.  
  554.     if(i==0)
  555.         {
  556.             (*na)+=1;
  557.             a[*na]=x;
  558.         }
  559. }
  560.  
  561. void show(int a[],int na)
  562. {
  563.     int i;
  564.     for(i=1;i<=na;i++)
  565.         printf("%d ",a[i]);
  566.     printf("\n");
  567. }
  568.  
  569. void read()
  570. {
  571.     int x,i;
  572.     scanf("%d",&n);
  573.     for(i=1;i<=n;i++)
  574.     {
  575.         scanf("%d",&x);
  576.         insereaza(a,&na,x);
  577.         show(a,na);
  578.     }
  579. }
  580.  
  581. int main()
  582. {
  583.     read();
  584.     return 0;
  585. }
  586.  
  587.  
  588.  
  589. // Problema 7 ( cu matrice, cifrele binare )
  590. #include <stdio.h>
  591. #include <stdlib.h>
  592. #define lmax 50
  593.  
  594. int a[lmax][lmax],n,m;
  595.  
  596. int putere(int x, int n)
  597. {
  598.     if(n==1)
  599.         return x;
  600.     if(n==0)
  601.         return 1;
  602.         else
  603.             if(n%2==1)
  604.         {
  605.             int rez= putere(x,n/2);
  606.             return rez*rez+x;
  607.         }
  608.         else
  609.         {
  610.             int rez=putere(x,n/2);
  611.             return rez*rez;
  612.         }
  613. }
  614.  
  615. void read()
  616. {
  617.     int x,i,j;
  618.     scanf("%d %d",&n,&m);
  619.     for(i=1;i<=n;i++)
  620.         for(j=1;j<=m;j++)
  621.         scanf("%d",&a[i][j]);
  622. }
  623.  
  624. void solve()
  625. {
  626.     int i,j,sum;
  627.  
  628.     for(j=1;j<=m;j++)
  629.     {
  630.         sum=0;
  631.         for(i=n;i>=1;i--)
  632.         if(a[i][j]==1)
  633.         sum+=putere(2,n-i);
  634.         printf("%d ",sum);
  635.     }
  636. }
  637.  
  638. int main()
  639. {
  640.     read();
  641.     solve();
  642.     return 0;
  643. }
  644.  
  645.  
  646. // Problema 9
  647.  
  648. #include <stdio.h>
  649. #include <stdlib.h>
  650. #define lmax 50
  651.  
  652. float a[lmax];
  653. int n;
  654.  
  655. void read()
  656. {
  657.     int x,i;
  658.     FILE *f=fopen("fisier.in","r");
  659.     fscanf(f,"%d",&n);
  660.     for(i=1;i<=n;i++)
  661.         fscanf(f,"%f",&a[i]);
  662. }
  663.  
  664. void sterge(int a[],int *n,int poz)
  665. {
  666.     int i;
  667.     for(i=poz;i<*n;i++)
  668.         a[i]=a[i+1];
  669.     (*n)-=1;
  670. }
  671.  
  672. void show()
  673. {
  674.     int i;
  675.     for(i=1;i<=n;i++)
  676.         printf("%f ",a[i]);
  677.     printf("\n");
  678. }
  679.  
  680. void solve()
  681. {
  682.     int i,j;
  683.     printf("Vectorul initial:");show();
  684.     for(i=1;i<n;i++)
  685.         for(j=i+1;j<=n;j++)
  686.         if(a[i]==a[j])
  687.     {
  688.         sterge(a,&n,j);
  689.         sterge(a,&n,i);
  690.         j=n+1;
  691.         i=0;
  692.     }
  693.  
  694.     printf("Vectorul final : ");
  695.     if(n==0)
  696.         printf(" este nul.");
  697.     else
  698.         show();
  699. }
  700.  
  701. int main()
  702. {
  703.     read();
  704.     solve();
  705.     return 0;
  706. }
  707.  
  708.  
  709. // Problema 10
  710.  
  711. #include <stdio.h>
  712. #include <stdlib.h>
  713. #define lmax 50
  714.  
  715. int a[lmax];
  716. int n;
  717.  
  718. void schimb(int *a,int *b)
  719. {
  720.     int *temp=*a;
  721.     *a=*b;
  722.     *b=*temp;
  723. }
  724. void read()
  725. {
  726.     int x,i;
  727.     FILE *f=fopen("fisier.in","r");
  728.     fscanf(f,"%d",&n);
  729.     for(i=1;i<=n;i++)
  730.         fscanf(f,"%d",&a[i]);
  731. }
  732.  
  733. int suma_Cifre(int nr)
  734. {
  735.     int sum=0;
  736.     while(nr)
  737.     {
  738.         sum+=nr%10;
  739.         nr/=10;
  740.     }
  741.     return sum;
  742. }
  743.  
  744. void show()
  745. {
  746.     int i;
  747.     for(i=1;i<=n;i++)
  748.         printf("%d ",a[i]);
  749.     printf("\n");
  750. }
  751.  
  752. void solve()
  753. {
  754.     int i,j,aux;
  755.     for(i=2;i<=n;i++)
  756.         for(j=i;j>=2;j--)
  757.         if(suma_Cifre(a[j])>suma_Cifre(a[j-1]))
  758.         {
  759.             aux=a[j];
  760.             a[j]=a[j-1];
  761.             a[j-1]=aux;
  762.         }
  763. }
  764.  
  765. int main()
  766. {
  767.     read();
  768.     show();
  769.     solve();
  770.     show();
  771.     return 0;
  772. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement