Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///problema asta nu functioneaza cum trebuie
- ///cred ca este de la inserare_triplet , dar nu am gasit greseala
- #include <iostream>
- #include<fstream>
- using namespace std;
- int verif_pereche(int i1,int j1,int i2,int j2)
- {
- if(i1>i2)
- return 0;
- if(i1<i2)
- return 1;
- if(i1==i2)
- if(j1<j2)
- return 1;
- else
- return 0;
- }
- void mutare(int x[300],int n,int stop)
- {
- int aux=n;
- while(aux>stop)
- {
- x[aux]=x[aux-3];
- aux--;
- }
- }
- void insertion(int x[300],int n,int start,int l,int c,int val)
- {
- x[start]=l;
- x[start+1]=c;
- x[start+2]=val;
- }
- void inserare_triplet(int x[300],int &n,int l,int c,int val)
- {
- if(n==0)
- {
- n+=3;
- insertion(x,n,1,l,c,val);
- }
- else
- {
- int ok=0;
- for(int i=1;i<=n;i+=3)
- {
- if(verif_pereche(l,c,i,i+1)==1)
- {
- n+=3;
- mutare(x,n,i+2);
- insertion(x,n,i,l,c,val);
- ok=1;
- break;
- }
- }
- if(ok==0)
- {
- n+=3;
- insertion(x,n,n-2,l,c,val);
- }
- }
- }
- void citire_mat_rar(int x[300],int &n)
- {
- int l,c,val;
- cin>>l>>c>>val;
- do
- {
- inserare_triplet(x,n,l,c,val);
- cin>>l>>c>>val;
- }while(l!=-1&&c!=-1);
- }
- void suma_matrice(int a[300],int na,int b[300],int nb,int c[300],int &nc)
- {
- int i=1,j=1;
- while(i<na&&j<nb)
- {
- if(a[i]==b[i]&&a[i+1]==b[i+1])
- {
- inserare_triplet(c,nc,a[i],a[i+1],a[i+2]+b[i+2]);
- i+=3;
- j+=3;
- }
- else
- if(verif_pereche(a[i],a[i+1],b[i],b[i+1])==1)
- {
- inserare_triplet(c,nc,a[i],a[i+1],a[i+2]);
- i+=3;
- }
- else
- {
- inserare_triplet(c,nc,b[i],b[i+1],b[i+2]);
- j+=3;
- }
- }
- while(i<na)
- {
- inserare_triplet(c,nc,a[i],a[i+1],a[i+2]);
- i+=3;
- }
- while(j<nb)
- {
- inserare_triplet(c,nc,b[i],b[i+1],b[i+2]);
- j+=3;
- }
- }
- int determinare_element(int x[300],int n,int l,int c)
- {
- for(int i=1;i<=n;i+=3)
- if(x[i]==l&&x[i+1]==c)
- return x[i+2];
- return 0;
- }
- void tiparire(int x[300],int n,int m,int lung_s)
- {
- /*int indice=1;*/
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- /*if(i==x[indice]&&j==x[indice+1])
- {
- cout<<x[indice+2]<<" ";
- indice+=3;
- }
- else
- cout<<"0"<<" ";*/
- cout<<determinare_element(x,lung_s,i,j)<<" ";
- }
- cout<<endl;
- }
- }
- int main()
- {
- int n,m,a[300],b[300],na=0,nb=0,c[300],nc=0;
- cin>>n>>m;
- citire_mat_rar(a,na);
- citire_mat_rar(b,nb);
- suma_matrice(a,na,b,nb,c,nc);
- tiparire(c,n,m,nc);
- /*cout<<endl;
- for(int i=1;i<=na;i++)
- cout<<a[i]<<" ";
- cout<<endl;
- for(int i=1;i<=nb;i++)
- cout<<b[i]<<" ";
- cout<<endl;
- for(int i=1;i<=nc;i++)
- cout<<c[i]<<" ";*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement