Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1)
- #include <stdio.h>
- int esIdentidad(int filas,int matriz[][filas]) // funcion que comprueba si es matriz identidad
- {
- int i,j;
- int cont=0;
- int flag=0;
- for(i=0;i<filas;i++)
- {
- cont=0;
- for(j=0;j<filas;j++)
- {
- if(matriz[i][j] != 0) //si la fila contiene un numero diferente de 0 aumenta el contador
- {
- cont++;
- }
- if(matriz[i][i] != 1) //si la fila no contiene un 1 en la posicion adecuada se actualiza el valor de flag
- {
- flag=1;
- }
- }
- if(cont != 1) //si la fila contiene mas o menos de un numero distinto de 0 entonces se actualiza el valor de flag
- {
- flag=1;
- }
- }
- if(flag==0) // si flag vale 0 la funcion retorna 1
- {
- return 1;
- }
- return 0;
- }
- int main()
- {
- int filas,i,j;
- do{
- scanf("%d",&filas); //lectura del numero de filas
- int matriz[filas][filas]; //declaracion de arreglo bidimensional donde se almacena la matriz
- if(filas != 0) // si filas s distinto de 0 se ejecutan las instrucciones
- {
- for(i=0;i<filas;i++)// lectura de la matriz
- {
- for(j=0;j<filas;j++)
- {
- scanf("%d",&matriz[i][j]);
- }
- }
- if(esIdentidad(filas,matriz)) //se llama a la funcion para ver si es matriz identidad
- {
- printf("SI\n"); // se imprime "SI" en caso de que la funcion retorne 1
- }
- else
- {
- printf("NO\n"); // se imprime "NO" en caso de que la funcion retorne 0
- }
- }
- }while(filas != 0); //condicion para que finalize el ciclo
- return 0;
- }
- 2)
- #include <stdio.h>
- //Funcion que verifica si alrededor de una celda libre hay por lo menos 6 minas
- int cuentaMinas(int alto,int ancho,int matriz[][ancho])
- {
- int i,j,cont_minas,cont=0;
- for(i=1;i<alto-1;i++)//ciclo que recorre las filas de la matriz
- {
- for(j=1;j<ancho-1;j++)//ciclo que recorre las columnas de la matriz
- {
- cont_minas=0; // variable que aumneta cada vez que se encuentra una mina alrededor de una celda libre
- if(matriz[i][j]==45)// si se encuentra una celda libre se ejecutan las instrucciones
- {
- //se pregunta si cada celda alrededor de la celda libre es una mina. Si es asi se aumenta el contador
- if(matriz[i-1][j-1]==42)
- {
- cont_minas++;
- }
- if(matriz[i-1][j]==42)
- {
- cont_minas++;
- }
- if(matriz[i-1][j+1]==42)
- {
- cont_minas++;
- }
- if(matriz[i][j-1]==42)
- {
- cont_minas++;
- }
- if(matriz[i][j+1]==42)
- {
- cont_minas++;
- }
- if(matriz[i+1][j-1]==42)
- {
- cont_minas++;
- }
- if(matriz[i+1][j]==42)
- {
- cont_minas++;
- }
- if(matriz[i+1][j+1]==42)
- {
- cont_minas++;
- }
- }
- if(cont_minas>=6)// si hay almenos 6 minas alrededor se aumenta el contador
- {
- cont++;
- }
- }
- }
- return cont;// retorna el numero de celdas libres con al menos 6 minas alrededor
- }
- //Programa Principal
- int main()
- {
- int ancho,alto,resultado=0,i,j;
- do{
- scanf("%d%d",&ancho,&alto);//lee el ancho y alto del campo
- getchar();
- if(((ancho!=0)&&(alto!=0)))//si el ancho y el alto son distintos de 0 se ejecutan las instrucciones
- {
- char campo[alto][ancho];
- int matriz[alto][ancho];
- for(i=0;i<alto;i++)
- {
- for(j=0;j<ancho;j++)
- {
- scanf("%c",&campo[i][j]);//se lee el campo en caracteres
- matriz[i][j]=campo[i][j];//traspasa el campo a una matriz de enteros
- }
- getchar();
- }
- resultado = cuentaMinas(alto,ancho,matriz);// llamada a la funcion cuentaMinas
- printf("%d\n",resultado);//imprime el resultado
- }
- }while((ancho!=0)&&(alto!=0));//si el ancho y el alto son distintos de 0 continua el ciclo
- return 0;
- }
- 3)
- #include <stdio.h>
- void asignacion(int c,int f,int a,int matriz[][c]);
- void inicializar(int c,int f,int matriz[][c]);
- int contador(int c,int f,int matriz[][c]);
- int main()
- {
- int c,f,a;
- do{
- scanf("%d%d%d",&c,&f,&a);
- if((c!=0)&&(f!=0))
- {
- int matriz[f+1][c+1];
- if(a>0)
- {
- inicializar(c,f,matriz);
- asignacion(c,f,a,matriz);
- printf("%d\n",contador(c,f,matriz));
- }
- else
- {
- printf("0\n");
- }
- }
- }while((c!=0)||(f!=0));
- return 0;
- }
- void inicializar(int c,int f,int matriz[][c])
- {
- int i,j;
- for(i=1;i<=f;i++)
- {
- for(j=1;j<=c;j++)
- {
- matriz[i][j] = 0;
- }
- }
- }
- void asignacion(int c,int f,int a,int matriz[][c])
- {
- int i,x,y;
- for(i=0;i<a;i++)
- {
- scanf("%d%d",&y,&x);
- matriz[x][y] = 1;
- if((matriz[x-1][y-1]!=1)&&(x-1>=1) && (y-1>=1))
- {
- matriz[x-1][y-1]=2;
- }
- if((matriz[x-1][y]!=1) &&(x-1 >=1))
- {
- matriz[x-1][y]=2;
- }
- if((matriz[x-1][y+1]!=1) && (x-1>=1)&& (y+1<=c))
- {
- matriz[x-1][y+1]=2;
- }
- if((matriz[x][y-1]!=1)&&(y-1>=1))
- {
- matriz[x][y-1]=2;
- }
- if((matriz[x][y+1]!=1)&&(y+1<=c))
- {
- matriz[x][y+1]=2;
- }
- if((matriz[x+1][y-1]!=1)&&(x+1<=f)&&(y-1>=1))
- {
- matriz[x+1][y-1]=2;
- }
- if((matriz[x+1][y]!=1)&&(x+1<=f))
- {
- matriz[x+1][y]=2;
- }
- if((matriz[x+1][y+1]!=1)&&(x+1<=f)&&(y+1<=c))
- {
- matriz[x+1][y+1]=2;
- }
- }
- }
- int contador(int c,int f,int matriz[][c])
- {
- int i,j,cont=0;
- for(i=1;i<=f;i++)
- {
- for(j=1;j<=c;j++)
- {
- if(matriz[i][j] == 2)
- {
- cont++;
- }
- }
- }
- return cont;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement