Advertisement
a53

Matrice2

a53
Jul 17th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream f("matrice2.in");
  4. ofstream g("matrice2.out");
  5. int n,m,a[205][105],t,COL[105],ok;
  6. char S[105];
  7.  
  8. int compara(int L1,int L2)
  9. {
  10. for(int i=1;i<=t;++i)
  11. if(a[L1][COL[i]]!=a[L2][COL[i]]) /// Cele doua linii nu sunt "egale"
  12. {
  13. if((S[i]=='C'&&a[L1][COL[i]]>a[L2][COL[i]])||(S[i]=='D'&&a[L1][COL[i]]<a[L2][COL[i]]))
  14. return 1; /// Cele doua linii nu sunt "egale" si trebuie inversate
  15. else
  16. return 0; /// Cele doua linii nu sunt "egale". dar nu trebuie inversate
  17. }
  18. return 0; /// Cele doua linii sunt "egale" si nu trebuie inversate
  19. }
  20.  
  21. int main()
  22. {
  23. f>>n>>m;
  24. for(int i=1;i<=n;++i)
  25. for(int j=1;j<=m;++j)
  26. f>>a[i][j];
  27. int p;
  28. f>>p;
  29. char op;
  30. for(int kk=1;kk<=p;++kk)
  31. {
  32. f>>op;
  33. switch(op)
  34. {
  35. case 'S': /// Stergerea
  36. {
  37. int i,j;
  38. f>>i>>j;
  39. int k;
  40. f>>k;
  41. int I[k+1],V[k+1];
  42. char O[k+1];
  43. for(int ii=1;ii<=k;++ii)
  44. f>>I[ii]>>O[ii]>>V[ii];
  45. for(int L=i;L<=j;++L)
  46. {
  47. ok=1;
  48. for(int ii=1;ii<=k;ii++)
  49. switch(O[ii])
  50. {
  51. case '<':
  52. {
  53. if(a[L][I[ii]]>=V[ii])
  54. ok=0;
  55. break;
  56. }
  57. case '>':
  58. {
  59. if(a[L][I[ii]]<=V[ii])
  60. ok=0;
  61. break;
  62. }
  63. case '!':
  64. {
  65. if((a[L][I[ii]]==V[ii]))
  66. ok=0;
  67. break;
  68. }
  69. case '=':
  70. {
  71. if(a[L][I[ii]]!=V[ii])
  72. ok=0;
  73. break;
  74. }
  75. }
  76. if(ok)
  77. {
  78. if(L==n)
  79. --n;
  80. else
  81. {
  82. for(int i=L;i<n;++i)
  83. for(int j=1;j<=m;++j)
  84. a[i][j]=a[i+1][j];
  85. --n;
  86. }
  87. --L;
  88. --j;
  89. }
  90. }
  91. break;
  92. }
  93. case 'O': /// Sortarea
  94. {
  95. int i,j;
  96. f>>i>>j;
  97. f>>t;
  98. for(int ii=1;ii<=t;++ii)
  99. f>>COL[ii]>>S[ii];
  100. while(true)
  101. {
  102. bool isSorted=true;
  103. for(int L=i;L<j;++L)
  104. if(compara(L,L+1))
  105. {
  106. isSorted=false;
  107. for(int kkk=1;kkk<=m;++kkk)
  108. swap(a[L][kkk],a[L+1][kkk]);
  109. }
  110. if (isSorted) break;
  111. }
  112. break;
  113. }
  114. case 'A': /// Adaugarea
  115. {
  116. ++n;
  117. for(int jj=1;jj<=m;++jj)
  118. f>>a[n][jj];
  119. break;
  120. }
  121. }
  122.  
  123. }
  124. g<<n<<'\n';
  125. for(int i=1;i<=n;++i)
  126. {
  127. for(int j=1;j<=m;++j)
  128. g<<a[i][j]<<' ';
  129. g<<'\n';
  130. }
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement