Olá comunidade, estou com um programa pronto aqui em C mas estou com dúvida.
Queria que esse programa, ao ser executado pela linha de comando fizesse como um exemplo que tenho aqui. Digitando o nome do programa no DOS da seguinte forma; C:\PROGRAMA 5 - ONDE 5 é o tamanho da tabuleiro...dou enter ele me retorna o resultado. No meu programa ao digitar isso ele aparece a mensagem: Entre com o tamanho do tabuleiro. Queria omitir essa mensagem como no exemplo. Sei que uso argc e argv, mas onde uso eles no código. Se puder me dar mais essa ajuda.
Valeu pela força!
Abração!!
Código completo:
#include <stdio.h>
#include <conio.h>
int n; //tamanho do tabuleiro
struct desloc
{ // Usado para sistemas de pontos,onde há deslocamentos nas direções x e y
int dx;
int dy;
};
// vetor de deslocamentos que define os possíveis
// movimentos do cavalo no tabuleiro de xadrez - maximo de 8 posicoes
Pergunta
MicheL Vilela
Olá comunidade, estou com um programa pronto aqui em C mas estou com dúvida.
Queria que esse programa, ao ser executado pela linha de comando fizesse como um exemplo que tenho aqui. Digitando o nome do programa no DOS da seguinte forma; C:\PROGRAMA 5 - ONDE 5 é o tamanho da tabuleiro...dou enter ele me retorna o resultado. No meu programa ao digitar isso ele aparece a mensagem: Entre com o tamanho do tabuleiro. Queria omitir essa mensagem como no exemplo. Sei que uso argc e argv, mas onde uso eles no código. Se puder me dar mais essa ajuda.
Valeu pela força!
Abração!!
Código completo:
#include <stdio.h>
#include <conio.h>
int n; //tamanho do tabuleiro
struct desloc
{ // Usado para sistemas de pontos,onde há deslocamentos nas direções x e y
int dx;
int dy;
};
// vetor de deslocamentos que define os possíveis
// movimentos do cavalo no tabuleiro de xadrez - maximo de 8 posicoes
desloc mov_cav[8 ]={{ 2, 1},{ 1, 2},{-1, 2},{-2, 1},
{-2,-1},{-1,-2},{ 1,-2},{ 2,-1}};
int **T; // tabuleiro
int nsq; // número de posiçoes no tabuleiro quando n^2
bool tenta_mov(int i, int x, int y) {
int u,v; // posição do próximo movimento
bool que; // quando true => movimento com sucesso
int k;
k=0;
do {
que=false;
u = x+mov_cav[k].dx;
v = y+mov_cav[k].dy;
k=k+1;
// verifica se a posição é válida no tabuleiro
// e se a posição ainda não foi visitada
if (0 <= u && u < n && 0 <= v && v < n &&
T[v ]==0) { //valida se posicoes u/v são menores que tam tabuleiro, se não estao
//preenchidas e se o tabuleiro na posicao u/v não esta ocupada
T[v ]=i; // registra a visita
if (i < nsq) { // i menor que numero de posicoes tabuleiro
// ainda há posições no tabuleiro não visitadas
que = tenta_mov(i+1,u,v);
if (!que) // movimento sem sucesso
T[v ]=0; // remova o registo de "visita"
}
else que=true;
}
} while (!que && k<8);
return que;
}
int main ( int argc, char **argv ) {
bool ok;
printf("Tamanho do tabuleiro = ");
scanf("%d", &n);
nsq = n*n;
// Aloca espaço para o tabuleiro
T= new(int* [n]);
for (int i=0; i < n; i++)
T= new(int[n]);
for (int i=0; i < n; i++)
for (int j=0; j < n; j++)
T[j]=0;
T[0][0]=1; //primeira posicao ocupada
ok= tenta_mov(2,0,0); // andar mais duas - chama funcao, I=2,x=0,z=0
if (ok) {
for (int i=0; i < n; i++) {
for (int j=0; j < n; j++)
printf("%d ", T[j]) ;
printf("\n") ;
getch();
}
}
else
printf("não há solucao!");
getch();
return 0;
}
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.