Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #include <stdio.h>
  2. void provjeraGresaka(){
  3. /// DODAJ DATOTEKU RJESENJE.TXT KOJA PREDSTAVLJA OCEKIVANI OUTPUT SA GRADERA
  4. FILE * in = fopen("output.txt", "r");
  5. FILE * out = fopen("rjesenje.txt", "r");
  6.  
  7. int brojacGreski = 0, inTest, outTest;
  8. fscanf(in, "/image %d %d RGBA\n", &inTest, &outTest);
  9. fscanf(out, "/image %d %d RGBA\n", &inTest, &outTest);
  10. while((fscanf(in, "%d ", &inTest)) == 1){
  11. fscanf(out, "%d ", &outTest);
  12. if(outTest != inTest)
  13. brojacGreski++;
  14. }
  15.  
  16. printf("Broj gresaka: %d\n", brojacGreski);
  17. fclose(in);
  18. fclose(out);
  19. }
  20. int provjeriBrid (int i,int j, int listaY1[], int listaX1[],int listaX2[], int listaY2[], int *index, int n){
  21. for (int k=0; k<n; k++){
  22. if (j == listaY1[k] && i >= listaX1[k] && i <= listaX2[k]){
  23. *index = listaY2[k] + 1;
  24. return 1;
  25. }
  26. }
  27. return 0;
  28. }
  29. int main(){
  30.  
  31. FILE* fin = fopen("input.txt", "r");
  32. FILE* fout = fopen("output.txt", "w");
  33.  
  34. int n, visina, sirina;
  35. fscanf(fin, "%d %d %d", &n, &visina, &sirina);
  36.  
  37. int listaX1[n], listaY1[n], listaX2[n], listaY2[n];
  38. int kanalA[visina][sirina], kanalR[visina][sirina], kanalG[visina][sirina], kanalB[visina][sirina];
  39.  
  40. for (int i=0; i<n; i++){
  41. fscanf(fin, " %d %d %d %d", &listaX1[i], &listaY1[i], &listaX2[i], &listaY2[i]);
  42. }
  43.  
  44. for (int i=0; i<visina; i++){
  45. for (int j=0; j<sirina; j++){
  46. fscanf(fin, " %d", &kanalR[i][j]);
  47. }
  48. }
  49.  
  50. for (int i=0; i<visina; i++){
  51. for (int j=0; j<sirina; j++){
  52. fscanf(fin, " %d", &kanalG[i][j]);
  53. }
  54. }
  55.  
  56. for (int i=0; i<visina; i++){
  57. for (int j=0; j<sirina; j++){
  58. fscanf(fin, " %d", &kanalB[i][j]);
  59. }
  60. }
  61.  
  62. for (int i=0; i<visina; i++){
  63. for (int j=0; j<sirina; j++){
  64. kanalA[i][j] = 255;
  65. }
  66. }
  67.  
  68.  
  69. int provjera;
  70. /*dohvati ocekivane output vrijednosti*/
  71. //dohvatimo pozicije
  72. for (int i=0; i<visina; i++){
  73. provjera = i;
  74. for (int j=0; j<sirina; j++){
  75. //dohvati ljude
  76. for (int k=0; k<n; k++){
  77. // ako se nalaze na bridovima bojaj zeleno, alpha je 255
  78. if (i>=listaX1[k] && i<=listaX2[k]){
  79. if (j>=listaY1[k] && j<=listaY2[k] && (provjera==listaX1[k] || provjera==listaX2[k])){
  80. kanalG[i][j] = 255;
  81. kanalR[i][j] = 0;
  82. kanalB[i][j] = 0;
  83. kanalA[i][j] = 255;
  84. }
  85. else if (provjera != listaX1[k] && provjera != listaX2[k] && (j == listaY1[k] || j==listaY2[k])){
  86. kanalG[i][j] = 255;
  87. kanalR[i][j] = 0;
  88. kanalB[i][j] = 0;
  89. kanalA[i][j] = 255;
  90. }
  91. }
  92. // ako se nalaze izvan, smanji na 127
  93. int index = -1;
  94. for (int i=0; i<visina; i++){
  95. for (int j=0; j<sirina; j++){
  96. int provjera = provjeriBrid (i,j, listaY1, listaX1,listaX2, listaY2, &index, n);
  97. if (provjera == 0){
  98. kanalA[i][j] = 127;
  99. index = -1;
  100. }
  101. else {
  102. j = index -1 ;
  103. index = -1;
  104. }
  105. }
  106. }
  107. }
  108.  
  109. }
  110. }
  111.  
  112.  
  113.  
  114.  
  115.  
  116. fprintf(fout, "/image %d %d RGBA\n", visina, sirina);
  117. for (int i = 0; i < visina; i++){
  118. for(int j = 0; j < sirina; j++){
  119. fprintf(fout, "%d %d %d %d ", kanalR[i][j], kanalG[i][j], kanalB[i][j], kanalA[i][j]);
  120. }
  121. }
  122. fclose(fout);
  123. fclose(fin);
  124. provjeraGresaka();
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement