Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Saida Programa


MicheL Vilela

Pergunta

Olá pessoal, quero validar a saida desse programa mas não estou conseguindo. O tamanho de n não pode ser maior que 20 e nem menor que 5, porém ao informar um número superior a esse o programa executa o código. Quando o valor é menor que 5 a mensagem aparece.Quando é maior que 20 ele continua processando.

Obrigado pela atenção.

Aí está o código:

// CIENCIA DA COMPUTACAO - FUMEC
// ESTRUTURA DE DADOS I
// MICHEL MARTINS VILELA


#include <stdio.h>
#include <conio.h>
#include <stdlib.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[u][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[u][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[u][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);

  if (argc != 2)
    exit(-1);
  printf("\n Utilizacao: %s %s. \n",argv[0],argv[1]);
  //system("PAUSE");

 if (n>20){
    printf("Faixa valida de 5 a 20!");
    }
 else
   n=atoi(argv[1]);
  nsq = n*n; 

  // Aloca espaço para o tabuleiro 

  T= new(int* [n]); 
  for (int i=0; i < n; i++) 
    T[i]= new(int[n]); 
  for (int i=0; i < n; i++) 
    for (int j=0; j < n; j++) 
      T[i][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[i][j]);
    printf("\n"); 
     getch(); 
    } 
 } 
  else  
    printf("Faixa valida de 5 a 20!");
delete T;
getch();
return 0;
}
[/b]

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Michel,

Boa Noite!

Você precisa atribuir valor a "n" antes de efetuar o teste!

Você está fazendo assim:

if (n>20){
    printf("Faixa valida de 5 a 20!");
    }
  else
    n=atoi(argv[1]);
Tente dessa forma:
n=atoi(argv[1]);
  if (n>20){
    printf("Faixa valida de 5 a 20!");
  }

Acho que é isso se entendi bem sua dúvida!

[]'s

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...