Advertisement
Guest User

2015

a guest
Apr 5th, 2020
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.20 KB | None | 0 0
  1. ///problema asta nu functioneaza cum trebuie
  2. ///cred ca este de la inserare_triplet , dar nu am gasit greseala
  3. #include <iostream>
  4. #include<fstream>
  5. using namespace std;
  6. int verif_pereche(int i1,int j1,int i2,int j2)
  7. {
  8.     if(i1>i2)
  9.         return 0;
  10.     if(i1<i2)
  11.         return 1;
  12.     if(i1==i2)
  13.         if(j1<j2)
  14.             return 1;
  15.         else
  16.             return 0;
  17. }
  18. void mutare(int x[300],int n,int stop)
  19. {
  20.     int aux=n;
  21.     while(aux>stop)
  22.     {
  23.         x[aux]=x[aux-3];
  24.         aux--;
  25.     }
  26. }
  27. void insertion(int x[300],int n,int start,int l,int c,int val)
  28. {
  29.     x[start]=l;
  30.     x[start+1]=c;
  31.     x[start+2]=val;
  32. }
  33. void inserare_triplet(int x[300],int &n,int l,int c,int val)
  34. {
  35.     if(n==0)
  36.     {
  37.         n+=3;
  38.         insertion(x,n,1,l,c,val);
  39.     }
  40.     else
  41.     {
  42.         int ok=0;
  43.         for(int i=1;i<=n;i+=3)
  44.         {
  45.             if(verif_pereche(l,c,i,i+1)==1)
  46.             {
  47.                 n+=3;
  48.                 mutare(x,n,i+2);
  49.                 insertion(x,n,i,l,c,val);
  50.                 ok=1;
  51.                 break;
  52.             }
  53.         }
  54.         if(ok==0)
  55.         {
  56.             n+=3;
  57.             insertion(x,n,n-2,l,c,val);
  58.         }
  59.     }
  60. }
  61. void citire_mat_rar(int x[300],int &n)
  62. {
  63.     int l,c,val;
  64.     cin>>l>>c>>val;
  65.     do
  66.     {
  67.         inserare_triplet(x,n,l,c,val);
  68.         cin>>l>>c>>val;
  69.     }while(l!=-1&&c!=-1);
  70. }
  71. void suma_matrice(int a[300],int na,int b[300],int nb,int c[300],int &nc)
  72. {
  73.     int i=1,j=1;
  74.     while(i<na&&j<nb)
  75.     {
  76.         if(a[i]==b[i]&&a[i+1]==b[i+1])
  77.         {
  78.             inserare_triplet(c,nc,a[i],a[i+1],a[i+2]+b[i+2]);
  79.             i+=3;
  80.             j+=3;
  81.         }
  82.         else
  83.             if(verif_pereche(a[i],a[i+1],b[i],b[i+1])==1)
  84.             {
  85.                 inserare_triplet(c,nc,a[i],a[i+1],a[i+2]);
  86.                 i+=3;
  87.             }
  88.             else
  89.             {
  90.                 inserare_triplet(c,nc,b[i],b[i+1],b[i+2]);
  91.                 j+=3;
  92.             }
  93.     }
  94.     while(i<na)
  95.     {
  96.         inserare_triplet(c,nc,a[i],a[i+1],a[i+2]);
  97.         i+=3;
  98.     }
  99.     while(j<nb)
  100.     {
  101.         inserare_triplet(c,nc,b[i],b[i+1],b[i+2]);
  102.         j+=3;
  103.     }
  104. }
  105. int determinare_element(int x[300],int n,int l,int c)
  106. {
  107.     for(int i=1;i<=n;i+=3)
  108.         if(x[i]==l&&x[i+1]==c)
  109.             return x[i+2];
  110.     return 0;
  111. }
  112. void tiparire(int x[300],int n,int m,int lung_s)
  113. {
  114.     /*int indice=1;*/
  115.     for(int i=1;i<=n;i++)
  116.     {
  117.         for(int j=1;j<=m;j++)
  118.         {
  119.             /*if(i==x[indice]&&j==x[indice+1])
  120.             {
  121.                 cout<<x[indice+2]<<" ";
  122.                 indice+=3;
  123.             }
  124.             else
  125.                 cout<<"0"<<" ";*/
  126.             cout<<determinare_element(x,lung_s,i,j)<<" ";
  127.         }
  128.         cout<<endl;
  129.     }
  130. }
  131. int main()
  132. {
  133.     int n,m,a[300],b[300],na=0,nb=0,c[300],nc=0;
  134.     cin>>n>>m;
  135.     citire_mat_rar(a,na);
  136.     citire_mat_rar(b,nb);
  137.     suma_matrice(a,na,b,nb,c,nc);
  138.     tiparire(c,n,m,nc);
  139.     /*cout<<endl;
  140.     for(int i=1;i<=na;i++)
  141.         cout<<a[i]<<" ";
  142.     cout<<endl;
  143.     for(int i=1;i<=nb;i++)
  144.         cout<<b[i]<<" ";
  145.     cout<<endl;
  146.     for(int i=1;i<=nc;i++)
  147.         cout<<c[i]<<" ";*/
  148.     return 0;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement