Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 10
- char** trimPredmet(char mat[][6], int* rezN, int* rezM);
- char** rotate90(char** predmet, int n, int m);
- int locate(char** novamatrica, int n, int m, char** predmet, int pN, int pM);
- char** r90(char** predmet, int n, int m);
- char** r180(char** predmet, int n, int m);
- char** r270(char** predmet, int n, int m);
- int main()
- {
- int rezN=0,rezM=0,i,j,pogodak=0,pN,pM,koliko=0,n=0,m=0,nema=0;
- int opasnipredmeti[10]={};
- char mat[6][6]={{}},**novamatrica,**predmet;
- scanf("%d %d",&n,&m);
- novamatrica=(char**)malloc(n*sizeof(char*));
- for(i=0;i<n;i++)
- *(novamatrica+i)=(char*)malloc(m*sizeof(char));
- for(i=0;i<n;i++){
- for(j=0;j<m;j++){
- scanf(" %c",&novamatrica[i][j]);
- }
- }
- // for(i=0;i<n;i++){
- // for(j=0;j<m;j++){
- // printf("%c",novamatrica[i][j]);
- // }
- // printf("\n");
- // }
- pN=n;
- pM=m;
- scanf("%d",&koliko);
- for(i=0;i<=koliko;i++){
- predmet=trimPredmet(mat,&rezN,&rezM);
- pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezM);
- if(pogodak==1){
- opasnipredmeti[i]=1;
- break;
- }
- else nema++;
- predmet=r90(predmet,rezN,rezM);
- pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
- if(pogodak==1){
- opasnipredmeti[i]=1;
- break;
- }
- else nema++;
- predmet=r180(predmet,rezN,rezM);
- pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
- if(pogodak==1){
- opasnipredmeti[i]=1;
- break;
- }
- else nema++;
- predmet=r270(predmet,rezN,rezM);
- pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
- if(pogodak==1){
- opasnipredmeti[i]=1;
- break;
- }
- else nema++;
- }
- if(nema*koliko==4*koliko){
- printf("Mozete proci.");
- }
- else
- printf("Opasni predmeti:");
- for(i=0;i<10;i++){
- if(opasnipredmeti[i]!=0)
- printf(" %d",i+1);
- }
- printf("\n");
- printf("VODI GA!");
- return 0;
- }
- char** trimPredmet(char mat[][6], int* rezN, int* rezM){
- int i,j,br=0,dole=0,gore=0,brLevo=0,n=0,m=0;
- char **zamjena;
- //*zamjena;
- char nesto[6][6]={{}};
- n=6;
- m=6;
- for(i=0;i<n;i++){
- for(j=0;j<m;j++){
- scanf(" %c",&mat[i][j]);
- nesto[i][j]=mat[i][j];
- }
- }
- for(j=0;j<m;j++){
- br=0;
- for(i=0;i<n;i++){
- if(mat[i][j]=='.')
- br++;
- if(br==n){
- for(i=0;i<n;i++){
- if(mat[i][j+1]!='.'){
- brLevo++;
- }
- }
- if(brLevo>=1){
- for(i=0;i<n;i++){
- mat[i][j]=mat[i][j+1];
- nesto[i][j]=mat[i][j];
- }
- }
- brLevo=br=0;
- }
- }}
- br=0;
- for(j=0;j<m;j++){
- br=0;
- for(i=0;i<n;i++){
- if(mat[i][j]=='.')
- br++;
- if(br==n){
- for(i=0;i<n;i++){
- mat[i][j]=0;
- }
- br=0;
- }
- }}
- i=br=0;
- for(j=0;j<m;j++){
- if(mat[i][j]!=0){
- br++;
- }
- if(br>=1){
- gore=br;
- }
- }
- j=br=0;
- for(i=0;i<n;i++){
- if(mat[i][j]!=0){
- br++;
- }
- if(br>=1){
- dole=br;
- }
- }
- *rezN=dole;
- *rezM=gore;
- zamjena=(char**)malloc(dole*sizeof(char*));
- for(i=0;i<dole;i++)
- *(zamjena+i)=(char*)malloc(gore*sizeof(char));
- for(i=0;i<m;i++){
- for(j=0;j<n;j++){
- // zamjena=mat[i][j];
- zamjena[i][j]=mat[i][j];
- nesto[i][j]=mat[i][j];
- }
- }
- return zamjena;
- }
- char** r90(char** predmet, int n, int m){
- char **zamjena;
- char nesto[6][6]={{}};
- int i,j;
- zamjena=(char**)malloc(n*sizeof(char*));
- for(i=0;i<n;i++)
- *(zamjena+i)=(char*)malloc(m*sizeof(char));
- for(i=0;i<m;i++){
- for(j=0;j<n;j++){
- zamjena[i][j]=predmet[j][i];
- if(predmet[j][i]=='-')
- zamjena[i][j]='|';
- else if(predmet[j][i]=='|')
- zamjena[i][j]='-';
- }
- }
- return zamjena;
- }
- char** r180(char** predmet, int n, int m){
- char **zamjena;
- char nesto[6][6]={{}};
- int i,j,k,l;
- zamjena=(char**)malloc(n*sizeof(char*));
- for(i=0;i<n;i++)
- *(zamjena+i)=(char*)malloc(m*sizeof(char));
- for(i=0,l=n-1;i<n,l>=0;i++,l--){
- for(j=0,k=m-1;j<m,k>=0;j++,k--){
- zamjena[i][j]=predmet[k][l];
- nesto[i][j]=predmet[k][l];
- if(predmet[k][l]=='-')
- zamjena[i][j]='|';
- else if(predmet[k][l]=='|')
- zamjena[i][j]='-';
- }
- }
- return zamjena;
- }
- char** r270(char** predmet, int n, int m){
- char **zamjena;
- char nesto[6][6]={{}};
- int i,j,l,k;
- zamjena=(char**)malloc(m*sizeof(char*));
- for(i=0;i<m;i++)
- *(zamjena+i)=(char*)malloc(n*sizeof(char));
- for(i=0,l=0;i<m,l<m;i++,l++){
- for(j=0,k=0;j<n,k<n;j++,k++){
- zamjena[i][j]=predmet[k][l];
- nesto[i][j]=predmet[k][l];
- if(predmet[k][l]=='-')
- zamjena[i][j]='|';
- else if(predmet[k][l]=='|')
- zamjena[i][j]='-';
- }
- }
- return zamjena;
- }
- int locate(char** novamatrica, int n, int m, char** predmet, int pN, int pM){
- int i=0,j=0,k=0,l=0,br=0,predmetbr=0,to=0;
- char pp[10][10]={{}},mm[10][10]={{}};
- for(i=0;i<n;i++){
- for(j=0;j<m;j++){
- pp[i][j]=novamatrica[i][j];
- }}
- for(i=0;i<pN;i++){
- for(j=0;j<pM;j++){
- mm[i][j]=predmet[i][j];
- }}
- for(i=0;i<n;i++){
- for(j=0;j<m;j++){
- br=predmetbr=0;
- for(k=0;k<pN;k++){
- for(l=0;l<pM;l++){
- if(predmet[i][j]!='.'){
- br++;
- if(novamatrica[i+k][j+l]==predmet[k][l]){
- predmetbr++;
- }
- }
- }
- }
- }
- if(br==predmetbr)
- to++;
- }
- if(predmetbr==to)
- return 1;
- else return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement