ex026 não entendo o erro.

Home Fóruns Linguagem C ex026 não entendo o erro.

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #63020
      FRANCISCO TADEU PEZZI
      Participante

      – Boa tarde! Não consigo entender onde está o erro?
      #import <stdio.h>
      #import <locale.h>
      void main(){
      setlocale(LC_ALL, “Portuguese”);
      char estado[10];
      printf(“Em que estado do Brasil voce nasceu? “);
      fflush(stdin);
      gets(estado);
      if (estado == “sp”){
      printf(“Paulista”);
      } else {
      if (estado == “ba”){
      printf(“Baiano”);
      }
      }
      }

    • #63143
      Tutora Mayla
      Mestre

      Francisco, alguns pontos sobre o seu código:

      • Não é possível fazer comparação de strings com “==”, é necessário utilizar a função strcmp(estado,"sp") == 0. Essa função retorna um inteiro, ele será -1 se a primeira string for “menor” que a segunda, 0 se forem iguais e 1 se a primeira string for “maior” que a segunda. Para utilizada é necessário incluir a biblioteca #import <string.h>
      • No else, está sendo feito um if, porém pelo contexto pode ser usado o else if, tente utiliza-lo no seu código. Essa parte não está errada mas imaginando uma situação com mais estados causaria problemas.

      Espero ter ajudado, se o erro persistir, volte a entrar em contato que lhe ajudaremos.

    • #63244
      FRANCISCO TADEU PEZZI
      Participante

      Obrigado! fiz o teste e está funcionando, vou fazer o exercício mais elaborado exemplo testado e aprovado abaixo:
      #import <stdio.h>
      #import <locale.h>
      #import <string.h>
      void main() {
      setlocale(LC_ALL, “Portuguese”);
      char estado[3];
      scanf(“%s”, estado);
      if(strcmp(estado,”SP”)== 0 || strcmp(estado,”sp”)==0){
      printf(“Paulista”);
      }else if(strcmp(estado,”RJ”)==0){
      printf(“Carioca”);
      }else if(strcmp(estado,”AC”)==0){
      printf(“Acreano”);
      }
      }
      Mais uma vez Grato!

Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.