Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void provjeraGresaka(){
- /// DODAJ DATOTEKU RJESENJE.TXT KOJA PREDSTAVLJA OCEKIVANI OUTPUT SA GRADERA
- FILE * in = fopen("output.txt", "r");
- FILE * out = fopen("rjesenje.txt", "r");
- int brojacGreski = 0, inTest, outTest;
- fscanf(in, "/image %d %d RGBA\n", &inTest, &outTest);
- fscanf(out, "/image %d %d RGBA\n", &inTest, &outTest);
- while((fscanf(in, "%d ", &inTest)) == 1){
- fscanf(out, "%d ", &outTest);
- if(outTest != inTest)
- brojacGreski++;
- }
- printf("Broj gresaka: %d\n", brojacGreski);
- fclose(in);
- fclose(out);
- }
- int provjeriBrid (int i,int j, int listaY1[], int listaX1[],int listaX2[], int listaY2[], int *index, int n){
- for (int k=0; k<n; k++){
- if (j == listaY1[k] && i >= listaX1[k] && i <= listaX2[k]){
- *index = listaY2[k] + 1;
- return 1;
- }
- }
- return 0;
- }
- int main(){
- FILE* fin = fopen("input.txt", "r");
- FILE* fout = fopen("output.txt", "w");
- int n, visina, sirina;
- fscanf(fin, "%d %d %d", &n, &visina, &sirina);
- int listaX1[n], listaY1[n], listaX2[n], listaY2[n];
- int kanalA[visina][sirina], kanalR[visina][sirina], kanalG[visina][sirina], kanalB[visina][sirina];
- for (int i=0; i<n; i++){
- fscanf(fin, " %d %d %d %d", &listaX1[i], &listaY1[i], &listaX2[i], &listaY2[i]);
- }
- for (int i=0; i<visina; i++){
- for (int j=0; j<sirina; j++){
- fscanf(fin, " %d", &kanalR[i][j]);
- }
- }
- for (int i=0; i<visina; i++){
- for (int j=0; j<sirina; j++){
- fscanf(fin, " %d", &kanalG[i][j]);
- }
- }
- for (int i=0; i<visina; i++){
- for (int j=0; j<sirina; j++){
- fscanf(fin, " %d", &kanalB[i][j]);
- }
- }
- for (int i=0; i<visina; i++){
- for (int j=0; j<sirina; j++){
- kanalA[i][j] = 255;
- }
- }
- int provjera;
- /*dohvati ocekivane output vrijednosti*/
- //dohvatimo pozicije
- for (int i=0; i<visina; i++){
- provjera = i;
- for (int j=0; j<sirina; j++){
- //dohvati ljude
- for (int k=0; k<n; k++){
- // ako se nalaze na bridovima bojaj zeleno, alpha je 255
- if (i>=listaX1[k] && i<=listaX2[k]){
- if (j>=listaY1[k] && j<=listaY2[k] && (provjera==listaX1[k] || provjera==listaX2[k])){
- kanalG[i][j] = 255;
- kanalR[i][j] = 0;
- kanalB[i][j] = 0;
- kanalA[i][j] = 255;
- }
- else if (provjera != listaX1[k] && provjera != listaX2[k] && (j == listaY1[k] || j==listaY2[k])){
- kanalG[i][j] = 255;
- kanalR[i][j] = 0;
- kanalB[i][j] = 0;
- kanalA[i][j] = 255;
- }
- }
- // ako se nalaze izvan, smanji na 127
- int index = -1;
- for (int i=0; i<visina; i++){
- for (int j=0; j<sirina; j++){
- int provjera = provjeriBrid (i,j, listaY1, listaX1,listaX2, listaY2, &index, n);
- if (provjera == 0){
- kanalA[i][j] = 127;
- index = -1;
- }
- else {
- j = index -1 ;
- index = -1;
- }
- }
- }
- }
- }
- }
- fprintf(fout, "/image %d %d RGBA\n", visina, sirina);
- for (int i = 0; i < visina; i++){
- for(int j = 0; j < sirina; j++){
- fprintf(fout, "%d %d %d %d ", kanalR[i][j], kanalG[i][j], kanalB[i][j], kanalA[i][j]);
- }
- }
- fclose(fout);
- fclose(fin);
- provjeraGresaka();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement