Jump to content
KGL2018

Programa em C que valida problemas de lógica matemática

Recommended Posts

Preciso fazer um programa que leia premissas e operadores, do tipo ^, v, ->, <-> para depois validar a proposição.

Fiz os comandos de leitura das premissas usando getche(), mas no teclado não consegui um meio de inserir os operadores da lógica matemática para comparação das proposições. Poderiam me dar uma dica?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By christin cley
      Construir um algoritmo em C++ que preencha um matriz quadrada de tamanho 4 pelo usuário. Após o preenchimento pelo usuário, verifique na diagonal principal qual foi o maior valor digitado e exiba na tela o valor. Por fim,  exiba na tela toda matriz em forma de matriz na tela.
    • By andreluizsgf
      Boa noite, eu estou tentando implementar uma função que imprima uma árvore como ela deveria ser, com o pai acima e a direita do menor filho e acima e a esquerda do maior filho. 
      Já tenho duas funcões que me permitem imprimir por nível, porém estou tentando adaptá-las para a impressão correta. Exemplo:
      árvore: 5,4,3,2,1;
      Impressão:
                  5
          3             4
      1      2

      O código para o print é este:
       
      void ---ivel(node_t* raiz, int level) { if (raiz == NULL){ for(int i = 0 ; i < 3 ; i++){ printf("\t"); return;} } if (level == 1) { for (int i=0; i<altura(raiz); i++) printf("\t"); simpleprint(raiz); } else if (level > 1) { ---ivel(raiz->left, level-1); ---ivel(raiz->right, level-1); } }   void printarordem(node_t *raiz) { int h = altura(raiz); int i; for (i=1; i<=h; i++) { printf("\t"); ---ivel(raiz, i); printf("\n"); } }

      Se alguém souber como resolver este ou sugerir outra implementação, fico super agradecido! 
    • By vinicius.benedito98
      Faça um Programa em Linguagem C que receba o nome e a nota de 180 alunos de uma sala e armazene em vetor. Calcule e mostre: 
      - A média da sala; 
      - O nome do aluno com a maior nota; 
      - O nome do aluno com a menor nota; 
      - Os nomes dos alunos aprovados;

      O meu código é esse :

      #define N 180 
      int main() { 
      int i, ind_maior, ind_menor; 
      float nota[N], soma=0, media, min_aprov=7; 
      char nome[N][50]; 
      for (i=0; i printf("Informe o nome do %dº aluno: ", i+1); 
      gets(nome); 
      printf("Informe a nota do %dº aluno: ", i+1); 
      scanf(" %d ", &nota); 
      soma += nota; 

      media = soma / N; 
      printf("\nMédia da sal: %.2f\n", media); 
      ind_menor = ind_maior = 0; 
      for (i=1; i if (nota < nota[ind_menor]) 
      ind_menor = i; 
      if (nota > nota[ind_maior]) 
      ind_maior = i; 

      printf("Menor nota: %s com %.2f\n", nome[ind_menor], nota[ind_menor]); 
      printf("Maior nota: %s com %.2f\n", nome[ind_maior], nota[ind_maior]); 
      printf("Aprovados:"); 
      for (i=0; i if (nota >= min_aprov) 
      printf("\t%s com: %.2f\n", nome, nota); 

      return 0; 
      }


      Porém quando vou executa-lo, o programa pede para inserir o nome e nota do aluno apenas uma vez, e fica por isso, ele não exibe os resultados, alguém pode me ajudar ?
    • By WizardTech
      Eu estou criando uma aplicação cliente/servidor em C no ubuntu. O propósito é bem simples, saber se vale mais a pena alugar ou vender um imóvel, o usuário digita o valor do aluguel, os meses que irá alugar e o valor que irá vender e o servidor faz as contas e devolve o resultado. Tudo está dentro de um do while para ficar infinito, no final o usuário digita CONTINUAR para testar outros valores e SAIR para encerrar a conexão. Mas está com um problema que não consigo identificar. A primeira vez que comparamos valores, o servidor retorna o resultado correto(alugar ou vender), porém a partir da segunda vez ao digitar CONTINUAR, ele sempre retorna resultados errados. Eu suspeito que esteja armazenando dados na variáveis erradas a partir da segunda vez, coloquei uns prints no meio do código para mostrar os valores e tem divergência.E também tentei zerar as variáveis no começo e usar vários bzero e fflush, mas sem resultado. Mas não tenho certeza de nada. Podem me ajudar?
       
      CÓDIGO DO CLIENTE:
      #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <string.h>  int main () { struct sockaddr_in sock; int con, sockid,numbytes; char resposta[10]; char buf[100]; char aluguel[10]; char venda[10]; char meses[2]; sockid = socket(AF_INET, SOCK_STREAM, 0); bzero(&(sock),sizeof(sock)); sock.sin_family = AF_INET; sock.sin_port = htons(9012); inet_pton(AF_INET, "127.0.0.1",&sock.sin_addr); con=connect(sockid,(struct sockaddr*)&sock,sizeof(sock)); do{ if(con>=0) { printf("=====================================================\n"); printf("Descubra se vale a pena vender ou alugar seu imóvel\n"); printf("=====================================================\n"); printf("Digite por quanto voce quer alugar: \n"); scanf("%s", &aluguel); printf("=====================================================\n"); if(send(sockid,aluguel,strlen(aluguel),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } printf("Digite por quantos meses ira alugar : \n"); scanf("%s", &meses); printf("=====================================================\n"); if(send(sockid,meses,strlen(meses),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } printf("Digite por quanto quer vender: \n"); scanf("%s", &venda); printf("=====================================================\n"); if(send(sockid,venda,strlen(venda),0)==-1) { printf("Erro ao enviar mensagem \n"); close(sockid); } bzero(&buf,sizeof(buf)); if((numbytes=recv(sockid,buf,100,0)==-1)) { printf("Erro ao receber a mensagem\n"); } printf("Vale mais a pena: %s\n",buf); printf("Digite SAIR para sair ou CONTINUAR para continuar a comparar.\n"); scanf("%s",&resposta); fflush(stdin); if(send(sockid,resposta,strlen(resposta),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } if(strcmp(resposta,"CONTINUAR")==0) { continue; } } }while(strcmp(resposta,"SAIR")!=0); close(sockid); }  
      CÓDIGO DO SERVIDOR:
      #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <string.h> int main () { int sockid; struct sockaddr_in servidor; int client,numbytes; float convertido; float convertido1; float convertido2; char passar[10]; char buf[100]; char buf1[100]; char buf2[100]; float resultado; char resposta[10];  sockid = socket(AF_INET, SOCK_STREAM,0); if(sockid==-1) { printf("Não foi possivel criar o socket"); exit(1); } servidor.sin_family= AF_INET; servidor.sin_addr.s_addr = htonl(INADDR_ANY); servidor.sin_port = htons(9012); if(bind(sockid,(struct sockaddr*)&servidor, sizeof(servidor))<0) { printf("Falhou ao associar a porta\n"); } listen(sockid, 3); int c, new_socket; while(1) { c = sizeof(struct sockaddr_in); new_socket = accept(sockid, (struct sockaddr *)&client,(socklen_t *)&c); if(new_socket <=0) { printf("Falhou ao aceitar o conector\n"); continue; } while(1){ printf("Conexão aceita\n"); fflush(stdin); resultado = 0; convertido = 0; convertido1 = 0; convertido2 = 0; bzero(&buf,sizeof(buf)); if((numbytes=recv(new_socket,buf,100,0)==-1)) { printf("Erro ao receber a mensagem\n"); } convertido = atof(buf); bzero(&buf1,sizeof(buf1)); if((numbytes=recv(new_socket,buf1,100,0)==-1)) { printf("Erro ao receber mensagem\n"); } convertido1 = atof(buf1); printf(buf1); bzero(&buf2,sizeof(buf2)); if((numbytes=recv(new_socket,buf2,100,0)==-1)) { printf("Erro ao receber mensagem\n"); } convertido2 = atof(buf2); printf(buf2);  resultado = convertido*convertido1; if(resultado>convertido2) { sprintf(passar, "Alugar"); } else { sprintf(passar,"Vender"); } if(send(new_socket,passar,strlen(passar),0)==-1) { printf("Erro ao enviar a mensagem\n"); close(new_socket); } bzero(&resposta,sizeof(resposta)); if((numbytes=recv(new_socket,resposta,strlen(resposta),0)==-1)) { printf("Erro ao receber a mensagem\n"); } fflush(stdin); if(strcmp(resposta,"SAIR")==0) {  close(new_socket); break; }  } }  }  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.