Ir ao conteúdo
  • Cadastre-se

C Problema na rotina principal


Posts recomendados

Quando o programa compila e executa, a rotina principal não segue como deveria, seleciono a porta serial, mas depois ele não executa a parte de selecionar a forma geométrica e já aparece a mensagem para executar novamente, sendo que não foi executado a seleção da forma geométrica.

 

Além da programação, vou deixar um print com o problema também.

 

#include <stdio.h>           // biblioteca padrão de entrada e saída
#include <stdlib.h>          // biblioteca padrão 
#include <fcntl.h>           // biblioteca controle de arquivos para ler a porta serial
#include <conio.h>           // Biblioteca para funções como getch() e funções graficas
#include <math.h>
#include<windows.h>
#include <time.h>
//------------------------------------------------------------------------------
//VARIAVEIS
HANDLE  hCom;

DCB dcb; 

int porta=1;                 // Ponteiro para porta cerial

char dado[5];                 // Variavel para recebimento de dado

char Serial_Port[4];         // Variavel para a seleção da porta a ser utilizada

char SelecionarForma;

char continua;

int matriz[10][10][10]; //DECLARA MATRIZ DE 10 LINHAS E 10 COLUNAS

int i,j,k;

int v1,v2,v3;
   
int a,b,c,d,r;
//------------------------------------------------------------------------------
//CONFIGURA PORTA SERIAL.
int ConfiguraControle(void)
{
   if(!GetCommState(hCom, &dcb))
   {
      return(0);
   }
   dcb.BaudRate = CBR_9600; 
   dcb.ByteSize = 8;
   dcb.Parity = NOPARITY;
   dcb.StopBits = ONESTOPBIT;

   if( SetCommState(hCom, &dcb) == 0 )
   {
      return(0);
   }
   return (1);
}
//------------------------------------------------------------------------------
//Abre a Porta Serial COMx
int AbrirPorta(char *NomePorta)
{
   hCom = CreateFile(
             NomePorta,
             GENERIC_READ | GENERIC_WRITE,
             0, // dispositivos comm abertos com acesso exclusivo
             NULL, // sem atributos de segurança
             OPEN_EXISTING, // deve usar OPEN_EXISTING
             0, //Entrada e saída sem ovelap.
             NULL // hTemplate deve ser NULL para comm
          );
   if(hCom == INVALID_HANDLE_VALUE)
   {
      return(0);
   }
   return (1);
}      
//------------------------------------------------------------------------------       
//FUNÇÃO DO PLANO
int Plano()
{
 printf("Digite os coeficientes do plano \na:");                      
            scanf("%i", &a);
            printf("\nb:");
            scanf("%i", &b);
            printf("\nc:");
            scanf("%i", &c);
            printf("\nd:");
            scanf("%i", &d);
            printf("\n\n");    
                                       
                         for(i=0;i<10;i++)
                          { 
                           for(j=0;j<10;j++)
                            {
                             for(k=0;k<10;k++)
                              {
                                       if( a*i + b*j + c*k + d == 0 )
                                        { 
                                         matriz[i][j][k]=1;
                                         printf("1");
                                         }
                                         else
                                        { 
                                         matriz[i][j][k]=0;
                                         printf("0");
                                         } 
                                 }
                              printf("\n");
                              }
                              printf("\n\n\n");
                           }  
                                
}
//------------------------------------------------------------------------------
//FUNÇÃO DA RETA
void Reta()
{
 printf("Digite os coeficientes da reta\na:");                      
            scanf("%i", &a);
            printf("\nb:");
            scanf("%i", &b);
            printf("\nc:");
            scanf("%i", &c);
            printf("\nv1:");       
            scanf("%i", &v1);
            printf("\nv2:");
            scanf("%i", &v2);
            printf("\nv3:");
            scanf("%i", &v3); 
                                       
                for(i=0;i<10;i++)
                          { 
                           for(j=0;j<10;j++)
                            {
                             for(k=0;k<10;k++)
                              {
                                       if( (((i-a)/v1) == ((j-b)/v2)) && (((j-b)/v2)  == ((k-c)/v3)) )
                                        { 
                                         matriz[i][j][k]=1;
                                         printf("1");
                                         }
                                         else
                                        { 
                                         matriz[i][j][k]=0;
                                         printf("0");
                                         } 
                                 }
                              printf("\n");
                              }
                              printf("\n\n\n");
                           }      
                    
                                  
}    
//------------------------------------------------------------------------------
//FUNÇÃO DA ESFERA
void Esfera()
{
     printf("Digite o raio da esfera");                      

            printf("\nr:");
            scanf("%i", &r);
             
                                       
                         for(i=0;i<10;i++)
                          { 
                           for(j=0;j<10;j++)
                            {
                             for(k=0;k<10;k++)
                              {
                                       if( ( (i*i) + (j*j) + (k*k) ) <= r*r )
                                        { 
                                         matriz[i][j][k]=1;
                                         printf("1");
                                         }
                                         else
                                        { 
                                         matriz[i][j][k]=0;
                                         printf("0");
                                         } 
                                 }
                              printf("\n");
                              }
                              printf("\n\n\n");
                           }      
}                           
//------------------------------------------------------------------------------     
//ROTINA PRINCIPAL
int main(int argc, char *argv[])
{  
 //------------------------ABRE E CONECTA PORTA SERIAL--------------------------         
 if(dado!="#")// Testa condição de fim do programa
   {
   // Recebe a por5ta que deve conectar
   printf("\n\nEntre com o nome da porta a ser utilizada : (EX: COM1,COM2 ...)\n\n");
   scanf("%s",Serial_Port); 
         
   AbrirPorta(Serial_Port);
   ConfiguraControle();
   CloseHandle(hCom);       
   
   porta = open(Serial_Port, O_RDWR);                  //abrir porta COMX
   // Trata erro na abertura da porta
   if (porta == -1)  
   printf("\n\nImpossivel abrir a porta. Ou porta não encontrada!\n\n");
   }
   else
       {

           // Se tudo ocorreu nos conformes limpa a tela e escreve o cabeçalho no arquivo
           // E informa que a porta selecionada foi conectada com sucesso     
                 system("cls"); 
                 printf("\nPorta %s Conectada\n\n",Serial_Port);
       }          
   sleep(1);      
        
//---------------------MENU DE FUNÇÕES------------------------------------------            
          printf("Selecione a forma geometrica desejada" "\n");
          
          scanf("%c", &SelecionarForma);
          
          if(SelecionarForma=='p')
                    { 
                     Plano();
                    } 
          if(SelecionarForma=='r')
                    {
                     Reta();
                    }
          if(SelecionarForma=='e')
                    {
                     Esfera();
                    }                                     
        
          printf("Executar Novamente (s/n)\n\n");
          scanf("%c", &continua); 
           
         
        
 system("PAUSE");	
 return 0;
}

 

problema.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...