Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Camping
#include <stdio.h> #include <stdlib.h> void reiniciarTabla( int** matriz, int fil, int col ); void marcarSombras( int** matriz, int* , int fil, int col, int ); int main(void){ int filas, columnas, arboles; do{ scanf( "%d%d%d\n", &columnas, &filas, &arboles ); if( (filas!=0) && (columnas != 0) && ( arboles!=0 )){ int **tabla; tabla = (int**) malloc( filas * sizeof(int*) ); for( int i=0; i<filas; i++ ){ tabla[i] = (int*) malloc( columnas * sizeof(int)+2); } int *lista = (int*) malloc( 2*arboles * sizeof(int)); for( int s=0; s<arboles*2; scanf( "%d", &lista[s] ), s++ ); for( int i=0; i<arboles*2; i++ ){ lista[i]--; } //reiniciarTabla( tabla, filas, columnas ); marcarSombras( tabla, lista, filas, columnas, arboles ); for( int i=0; i< filas ; i++ ){ for( int j=0; j< columnas ; j++ ){ printf("%d ",tabla[i][j]); } printf( "\n" ); } } }while( (filas!=0) && (columnas != 0) && ( arboles!=0 ) ); return 0; } void marcarSombras( int** matriz, int* vector, int fil, int col, int tlogico ){ int i, j; for( j=0, i=1; j<tlogico*2+1; j++, i++ ){ if( (vector[i] ) && (vector[j]) ){ //centro matriz[vector[i]-1][vector[j]-1]=1; // arriba izquierda matriz[vector[i]-1][ vector[j] ]=1; // arriba matriz[vector[i]-1][vector[j]+1]=1; // arriba derecha matriz[vector[i]+1][vector[j]-1]=1; // uno abajo y uno a la izquierda matriz[vector[i]+1][ vector[j] ]=1; // uno abajo matriz[vector[i]+1][vector[j]+1]=1; // uno abajo y uno a la derecha matriz[ vector[i] ][vector[j]-1]=1; // uno izquierda matriz[ vector[i] ][vector[j]+1]=1; // uno derecha } if( (!vector[i]) && (!vector[j])){ matriz[ vector[i] ][vector[j]+1]=1; matriz[vector[i]+1][ vector[j] ]=1; matriz[vector[i]+1][vector[j]+1]=1; } if( !vector[i] &&( vector[j] == col-1 )){ matriz[ vector[i] ][ vector[j]-1]=1; matriz[vector[i]+1][vector[j]-1]=1; matriz[vector[i]+1][ vector[j] ]=1; } if( (vector[i] == fil-1 )&& !vector[j] ){ matriz[vector[i]-1][ vector[j] ]=1; matriz[vector[i]-1][vector[j]+1]=1; matriz[ vector[i] ][vector[j]+1]=1; } if(( vector[i] == fil-1 )&&( vector[j] == col-1 )){ matriz[vector[i]-1][ vector[j] ]=1; matriz[vector[i]-1][vector[j]-1]=1; matriz[ vector[i] ][vector[j]-1]=1; } if( !vector[i] && vector[j] ){//borde superior matriz[vector[i]+1][ vector[j] ]=1; matriz[ vector[i] ][vector[j]-1]=1; matriz[ vector[i] ][vector[j]+1]=1; matriz[vector[i]+1][vector[j]-1]=1; matriz[vector[i]+1][vector[j]+1]=1; } if( vector[i] && !vector[j] ){//borde izquierdo matriz[vector[i]-1][ vector[j] ] = 1; // arriba matriz[vector[i]-1][vector[j]+1] = 1; // arriba derecha matriz[ vector[i] ][vector[j]+1] = 1; // uno derecha matriz[vector[i]+1][ vector[j] ] = 1; // uno abajo matriz[vector[i]+1][vector[j]+1] = 1; // uno abajo y uno a la derecha } if(( vector[i] == fil-1 )&& vector[j] ){ // borde inferior matriz[vector[i]-1][vector[j]-1] = 1; // arriba izquierda matriz[vector[i]-1][ vector[j] ] = 1; // arriba matriz[vector[i]-1][vector[j]+1] = 1; // arriba derecha matriz[ vector[i] ][vector[j]-1]=1; // uno izquierda matriz[ vector[i] ][vector[j]+1]=1; // uno derecha } if( vector[i] &&( vector[j] == col-1 )){ //borde derecho matriz[vector[i]-1][vector[j]-1]=1; // arriba izquierda matriz[vector[i]-1][ vector[j] ]=1; // arriba matriz[ vector[i] ][vector[j]-1]=1; // uno izquierda matriz[ vector[i] ][vector[j]-1]=1; // uno izquierda matriz[vector[i]+1][ vector[j] ]=1; // uno abajo } } } void reiniciarTabla( int** matriz, int fil, int col ){ for( int i = 0; i < fil ; i++ ) { for( int j = 0 ; j < col; j++ ) { matriz[i][j] = 0; } } }
run
|
edit
|
history
|
help
0
poist
pattern
Day Of The Programmer
convertletter
Programação em C, testes
TopRightTriangle.c
fgets and basic string manipulation
sum of min and max
#Define / Case/ If practice
Linked List demo in C