1
Linguagens de Programação
UFGD
15
Linguagens de Programação
UFGD
4
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
7
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
Texto de pré-visualização
include stdioh include stdlibh include timeh define ERRORFILEMSG Nao foi possivel abrir o arquivo define INVALIDOPTION Opcao invalida Tente novamente enum boolean FALSO0 VERDADEIRO1 Prototipos FILE carregarchar quadro99 FILE carregarcontinuarjogo char quadro99 char nomearquivo void carregarnovojogochar quadro99 char nomearquivo int determinarquadranteint x int y FILE criararquivobinariochar quadro99 int evalidoconst char quadro99 int x int y int valor int evalidonacolunaconst char quadro99 int y int valor int evalidonoquadro3x3const char quadro99 int x int y int valor int evalidonalinhaconst char quadro99 int x int valor int existecampovazioconst char quadro99 void imprimirconst char quadro99 void jogar void resolverFILE char quadro99 void resolverumpassochar quadro99 void salvarjogadabinFILE fb char quadro99 Funcoes auxiliares int fimxint quadr int fimyint quadr int leopcao void genrandomchar s const int len int inixint quadr int iniyint quadr void menu void menuarquivo MAIN int main inicia o jogo jogar return 0 CARREGAR Inicializa o SUDOKU a partir de um novo jogo ou estado de jogo anterior FILE carregarchar quadro99 int opcao menuarquivo opcao leopcao TODO Função incompleta switchopcao carregar novo sudoku case 1 break continuar jogo case 2 break retornar ao menu anterior case 9 break default break CARREGAR CONTINUAR JOGO Carrega um estado de jogo a partir de um arquivo binario FILE carregarcontinuarjogo char quadro99 char nomearquivo TODO CARREGAR NOVO JOGO Carrega um novo jogo do Sudoku void carregarnovojogochar quadro99 char nomearquivo TODO CRIAR ARQUIVO BINARIO Criar arquivo binario FILE criararquivobinariochar quadro99 TODO DETERMINAR QUADRANTE Dado as posicoes x e y determina o quadrante do quadro int determinarquadranteint x int y if x 3 y 3 return 1 else if x 3 y 6 return 2 else if x 3 y 9 return 3 else if x 6 y 3 return 4 else if x 6 y 6 return 5 else if x 6 y 9 return 6 else if x 9 y 3 return 7 else if x 9 y 6 return 8 else return 9 E VALIDO Determina se um valor na posicao x e y e valido int evalidoconst char quadro99 int x int y int valor verifica as tres condicoes if evalidonacolunaquadro y valor return FALSO if evalidonalinhaquadro x valor return FALSO if evalidonoquadro3x3quadro x y valor return FALSO return VERDADEIRO E VALIDO NA COLUNA Verifica se um valor na coluna y e valido int evalidonacolunaconst char quadro99 int y int valor TODO E VALIDO NA LINHA Verifica se um valor na linha x e valido int evalidonalinhaconst char quadro99 int x int valor TODO E VALIDO NO QUADRO 3X3 Verifica se um valor e valido no quadrante da posicao x y int evalidonoquadro3x3const char quadro99 int x int y int valor TODO EXISTE CAMPO VAZIO Verifica se existe um campo nao preenchido int existecampovazioconst char quadro99 int i j fori 0 i 9 i forj 0 j 9 j if quadroij 0 return VERDADEIRO return FALSO IMPRIMIR Imprime o quadro inteiro do sudoku void imprimirconst char quadro99 int i j puts SUDOKU puts 1 2 3 4 5 6 7 8 9 for i 0 i 9 i if i 3 0 puts for j 0 j 9 j if j 0 printfd i1 else if j 3 0 printf if quadroij 0 printf else printfd quadroij puts puts JOGAR Realiza toda a logica do jogo void jogar int opcao char quadro99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FILE fb NULL opcao 0 while opcao 9 imprime na tela o quadro atual imprimirquadro apresenta um menu com as opcoes menu opcao leopcao switch opcao carregar sudoku case 1 fb carregarquadro if fb NULL fb criararquivobinarioquadro break preencher quadro com um valor case 2 int x y valor printfEntre com a posicao e o valor linha coluna valor scanfd d d x y valor if evalidoquadro x y valor quadroxy valor salvarjogadabinfb quadro else putsValor ou posicao incorreta Tente novamente break resolver 1 passo case 3 resolverumpassoquadro salvarjogadabinfb quadro putsUm passo resolvido break resolver o sudoku case 4 resolverfb quadro break case 9 putsPrograma finalizado break default putsINVALIDOPTION break RESOLVER Resolve o sudoku void resolverFILE fb char quadro99 enquanto houver posicoes vazias no quadro whileexistecampovazioquadro resolverumpassoquadro salvarjogadabinfb quadro RESOLVER UM PASSO Preenche apenas um campo vazio void resolverumpassochar quadro99 TODO SALVAR JOGADA BINARIO Salva o estado atual do quadro no arquivo binario void salvarjogadabin FILE fb char quadro99 TODO FUNCOES AUXILIARES FIM X Indice final da linha para o quadrante recebido como parametro int fimxint quadr switchquadr case 1 case 2 case 3 return 2 case 4 case 5 case 6 return 5 default return 8 FIM Y Indice final da coluna para o quadrante recebido como parametro int fimyint quadr switchquadr case 1 case 4 case 7 return 2 case 2 case 5 case 8 return 5 default return 8 GENRANDOM Gera uma cadeira de caracteres randomica de tamanho len void genrandomchar s const int len srandtimeNULL static const char alphanum 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz int i for i 0 i len i si alphanumrand sizeofalphanum 1 slen 0 INI X Indice inicial da linha para o quadrante recebido como parametro int inixint quadr switchquadr case 1 case 2 case 3 return 0 case 4 case 5 case 6 return 3 default return 7 INI Y Indice inicial da coluna para o quadrante recebido como parametro int iniyint quadr switchquadr case 1 case 4 case 7 return 0 case 2 case 5 case 8 return 3 default return 7 LE OPCAO Imprime a mensagem a faz a leitura da opcao int leopcao int opcao printfOpcao scanfd opcao return opcao MENU Imprime o menu de opcoes void menu puts SUDOKU puts1 Carregar jogo puts2 Jogar puts3 Resolver um passo puts4 Resolver puts9 Finalizar puts MENU ARQUIVO Imprime o menu de opcoes do arquivo void menuarquivo puts MENU ARQUIVO puts1 Novo jogo puts2 Continuar jogo puts9 Retornar ao menu anterior puts
1
Linguagens de Programação
UFGD
15
Linguagens de Programação
UFGD
4
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
7
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
Texto de pré-visualização
include stdioh include stdlibh include timeh define ERRORFILEMSG Nao foi possivel abrir o arquivo define INVALIDOPTION Opcao invalida Tente novamente enum boolean FALSO0 VERDADEIRO1 Prototipos FILE carregarchar quadro99 FILE carregarcontinuarjogo char quadro99 char nomearquivo void carregarnovojogochar quadro99 char nomearquivo int determinarquadranteint x int y FILE criararquivobinariochar quadro99 int evalidoconst char quadro99 int x int y int valor int evalidonacolunaconst char quadro99 int y int valor int evalidonoquadro3x3const char quadro99 int x int y int valor int evalidonalinhaconst char quadro99 int x int valor int existecampovazioconst char quadro99 void imprimirconst char quadro99 void jogar void resolverFILE char quadro99 void resolverumpassochar quadro99 void salvarjogadabinFILE fb char quadro99 Funcoes auxiliares int fimxint quadr int fimyint quadr int leopcao void genrandomchar s const int len int inixint quadr int iniyint quadr void menu void menuarquivo MAIN int main inicia o jogo jogar return 0 CARREGAR Inicializa o SUDOKU a partir de um novo jogo ou estado de jogo anterior FILE carregarchar quadro99 int opcao menuarquivo opcao leopcao TODO Função incompleta switchopcao carregar novo sudoku case 1 break continuar jogo case 2 break retornar ao menu anterior case 9 break default break CARREGAR CONTINUAR JOGO Carrega um estado de jogo a partir de um arquivo binario FILE carregarcontinuarjogo char quadro99 char nomearquivo TODO CARREGAR NOVO JOGO Carrega um novo jogo do Sudoku void carregarnovojogochar quadro99 char nomearquivo TODO CRIAR ARQUIVO BINARIO Criar arquivo binario FILE criararquivobinariochar quadro99 TODO DETERMINAR QUADRANTE Dado as posicoes x e y determina o quadrante do quadro int determinarquadranteint x int y if x 3 y 3 return 1 else if x 3 y 6 return 2 else if x 3 y 9 return 3 else if x 6 y 3 return 4 else if x 6 y 6 return 5 else if x 6 y 9 return 6 else if x 9 y 3 return 7 else if x 9 y 6 return 8 else return 9 E VALIDO Determina se um valor na posicao x e y e valido int evalidoconst char quadro99 int x int y int valor verifica as tres condicoes if evalidonacolunaquadro y valor return FALSO if evalidonalinhaquadro x valor return FALSO if evalidonoquadro3x3quadro x y valor return FALSO return VERDADEIRO E VALIDO NA COLUNA Verifica se um valor na coluna y e valido int evalidonacolunaconst char quadro99 int y int valor TODO E VALIDO NA LINHA Verifica se um valor na linha x e valido int evalidonalinhaconst char quadro99 int x int valor TODO E VALIDO NO QUADRO 3X3 Verifica se um valor e valido no quadrante da posicao x y int evalidonoquadro3x3const char quadro99 int x int y int valor TODO EXISTE CAMPO VAZIO Verifica se existe um campo nao preenchido int existecampovazioconst char quadro99 int i j fori 0 i 9 i forj 0 j 9 j if quadroij 0 return VERDADEIRO return FALSO IMPRIMIR Imprime o quadro inteiro do sudoku void imprimirconst char quadro99 int i j puts SUDOKU puts 1 2 3 4 5 6 7 8 9 for i 0 i 9 i if i 3 0 puts for j 0 j 9 j if j 0 printfd i1 else if j 3 0 printf if quadroij 0 printf else printfd quadroij puts puts JOGAR Realiza toda a logica do jogo void jogar int opcao char quadro99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FILE fb NULL opcao 0 while opcao 9 imprime na tela o quadro atual imprimirquadro apresenta um menu com as opcoes menu opcao leopcao switch opcao carregar sudoku case 1 fb carregarquadro if fb NULL fb criararquivobinarioquadro break preencher quadro com um valor case 2 int x y valor printfEntre com a posicao e o valor linha coluna valor scanfd d d x y valor if evalidoquadro x y valor quadroxy valor salvarjogadabinfb quadro else putsValor ou posicao incorreta Tente novamente break resolver 1 passo case 3 resolverumpassoquadro salvarjogadabinfb quadro putsUm passo resolvido break resolver o sudoku case 4 resolverfb quadro break case 9 putsPrograma finalizado break default putsINVALIDOPTION break RESOLVER Resolve o sudoku void resolverFILE fb char quadro99 enquanto houver posicoes vazias no quadro whileexistecampovazioquadro resolverumpassoquadro salvarjogadabinfb quadro RESOLVER UM PASSO Preenche apenas um campo vazio void resolverumpassochar quadro99 TODO SALVAR JOGADA BINARIO Salva o estado atual do quadro no arquivo binario void salvarjogadabin FILE fb char quadro99 TODO FUNCOES AUXILIARES FIM X Indice final da linha para o quadrante recebido como parametro int fimxint quadr switchquadr case 1 case 2 case 3 return 2 case 4 case 5 case 6 return 5 default return 8 FIM Y Indice final da coluna para o quadrante recebido como parametro int fimyint quadr switchquadr case 1 case 4 case 7 return 2 case 2 case 5 case 8 return 5 default return 8 GENRANDOM Gera uma cadeira de caracteres randomica de tamanho len void genrandomchar s const int len srandtimeNULL static const char alphanum 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz int i for i 0 i len i si alphanumrand sizeofalphanum 1 slen 0 INI X Indice inicial da linha para o quadrante recebido como parametro int inixint quadr switchquadr case 1 case 2 case 3 return 0 case 4 case 5 case 6 return 3 default return 7 INI Y Indice inicial da coluna para o quadrante recebido como parametro int iniyint quadr switchquadr case 1 case 4 case 7 return 0 case 2 case 5 case 8 return 3 default return 7 LE OPCAO Imprime a mensagem a faz a leitura da opcao int leopcao int opcao printfOpcao scanfd opcao return opcao MENU Imprime o menu de opcoes void menu puts SUDOKU puts1 Carregar jogo puts2 Jogar puts3 Resolver um passo puts4 Resolver puts9 Finalizar puts MENU ARQUIVO Imprime o menu de opcoes do arquivo void menuarquivo puts MENU ARQUIVO puts1 Novo jogo puts2 Continuar jogo puts9 Retornar ao menu anterior puts