rendered paste body#include <iostream>#include <list>using namespace std;//dodawanievoid dodaj(list<int> a,list<int> b);//czzesc wspolnavoid iloczyn(list<int> a,list<int> b);//odejmowanievoid odejmij(list<int> a,list<int> b);//iloczyn kartezjanskivoid ik(list<int> a,list<int> b);//wyswietlanievoid wyswietl(list<int> a);int main(){ int T,X,Y,Z; int i,j,k,l,m,n,tmp; list<int> lstA,lstB; char dzialanie[3],ch; cin>>T; for(i=0;i<T;i++) { cin>>X>>Y>>Z; for(j=0;j<X;j++) { cin>>tmp; lstA.push_back(tmp); } for(k=0;k<Y;k++) { cin>>tmp; lstB.push_back(tmp); } cout<<"A=";wyswietl(lstA); cout<<"B=";wyswietl(lstB); for(l=0;l<Z;l++) { for(m=0;m<3;m++) { cin>>ch; dzialanie[m]=ch; }// for(m=0;m<3;m++) cout<<dzialanie[m]; // cout<<endl; switch(dzialanie[1]) { case '*':{ if((dzialanie[0]=='A')&&(dzialanie[2]=='B')) { cout<<"A*B="; iloczyn(lstA,lstB); break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='A')) { cout<<"B*A="; iloczyn(lstB,lstA); break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='B')) { cout<<"B*B="; wyswietl(lstB); break; } if((dzialanie[0]=='A')&&(dzialanie[2]=='A')) { cout<<"A*A="; wyswietl(lstA); break; } break; } case '+':{ if((dzialanie[0]=='A')&&(dzialanie[2]=='B')) { cout<<"A+B="; dodaj(lstA,lstB); break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='A')) { cout<<"B+A="; dodaj(lstA,lstB); break; } if((dzialanie[0]=='A')&&(dzialanie[2]=='A')) { cout<<"A+A="; wyswietl(lstA); break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='B')) { cout<<"B+B="; wyswietl(lstB); break; } break; } case '-':{ if((dzialanie[0]=='A')&&(dzialanie[2]=='B')) { cout<<"A-B="; odejmij(lstA,lstB); break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='A')) { cout<<"B-A="; odejmij(lstB,lstA); break; } if((dzialanie[0]=='A')&&(dzialanie[2]=='A')) { cout<<"A-A={0}"<<endl; break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='B')) { cout<<"B-B={0}"<<endl; break; } break; } case 'x':{ if((dzialanie[0]=='A')&&(dzialanie[2]=='B')) { cout<<"AxB={"; ik(lstA,lstB); cout<<"}"<<endl; break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='A')) { cout<<"BxA={"; ik(lstB,lstA); cout<<"}"<<endl; break; } if((dzialanie[0]=='B')&&(dzialanie[2]=='B')) { cout<<"BxB={"; ik(lstB,lstB); cout<<"}"<<endl; break; } if((dzialanie[0]=='A')&&(dzialanie[2]=='A')) { cout<<"AxA={"; ik(lstA,lstA); cout<<"}"<<endl; break; } break; } } } lstA.clear(); lstB.clear(); } return 0;}void dodaj(list<int> a,list<int> b){ list<int> lstC; list<int>::iterator k; for(k=a.begin();k!=a.end();k++) lstC.push_back(*k); for(k=b.begin();k!=b.end();k++) lstC.push_back(*k); //sortowanie elementow lstC.sort(); //szukanie duplikatow i usuwanie lstC.unique(); wyswietl(lstC); lstC.clear();}//czzesc wspolnavoid iloczyn(list<int> a,list<int> b){ list<int> lstC; list<int>::iterator k,l; for(k=a.begin();k!=a.end();k++) for(l=b.begin();l!=b.end();l++) { if((*k)==(*l)) lstC.push_back(*k); } lstC.sort(); lstC.unique(); wyswietl(lstC); lstC.clear();}void odejmij(list<int> a,list<int> b){ list<int> lstC; list<int>::iterator k,l; for(k=a.begin();k!=a.end();k++) lstC.push_back(*k); for(k=b.begin();k!=b.end();k++) { l=lstC.begin(); while(l!=lstC.end()) { if((*k)==(*l)) l=lstC.erase(l); l++; } lstC.sort(); lstC.unique(); } wyswietl(lstC); lstC.clear();}void wyswietl(list<int> a){ int tmp=1; list<int>::iterator i; cout<<"{"; if(a.size()!=0) { for(i=a.begin();i!=a.end();i++) { if(tmp<a.size()) cout<<(*i)<<","; else cout<<(*i); tmp++; } cout<<"}"<<endl; } else cout<<"0}"<<endl;}void ik(list<int> a,list<int> b){ list<int> lstC; list<int>::iterator i,j; int temp1=1,temp2=a.size()*b.size(); for(i=a.begin();i!=a.end();i++) for(j=b.begin();j!=b.end();j++) { cout<<"{"<<*i<<","<<*j<<"}"; if(temp1<temp2) cout<<","; temp1++; }}