Ir ao conteúdo
  • Cadastre-se

Pedro VN

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por Pedro VN

  1. Citação

     

    O problema realmente era o "&" do scanf, tirei ele e funcionou normalmente com o Ç. Obrigado a todos, é incrível como um pequeno detalhe muda tudo na programação, eu nunca havia tido este problema antes atribuindo string desta maneira, vou parar com esse hábito.

    agora, arfneto disse:

    Olá

     

    Recomento muito continuar seu programa e seu plano de aprendizado sem ler ou gravar caracteres acentuados. Isso é um inferno e não leva a nada. 

     

    Quando por exemplo seu sistema de locadora estiver apto para LOCACAO e DEVOLUCAO de fitas, com todas aquelas muitas funções rodando, você aproveita seus novos conhecimentos em C e volta a esse caso dos caracteres acentuados e implementa a locação e devolução, se é que você me entende ;) 

     

    Dependendo de como e onde roda você pode ter esses caracteres ocupando mais posições, com uma letra usando duas posições num texto, as comparações não vão funcionar direito, tipo c é diferente de ç mas faz mesmo diferença?

     

    E de todo modo assim que você estiver mais familiarizado com a linguagem e o sistema vai passar a usar a interface gráfica e não essa console chata.

     

    Hoje em dia há de fato muito interesse em programas para console mas por razões bem distintas, e não tem a ver com aprendizado, mas sim com o acesso a máquinas remotas que não tem interface gráfica. Mas vou me manter no tópico aqui.

     

    Sobre scanf() postei um programa completo aqui e uma discussão sobre isso, e talvez valha pena você pesquisar aqui sobre isso. Eu não me lembro agora do post

     

    Em resumo entenda que scanf() é uma rotina ativa: isso quer dizer que ela processa a a entrada --- scan --- tentando satisfazer a máscara de leitura que você usou. Aquilo entre "". E às vezes ela come caracteres, linhas inteiras, parece não retornar e tal. Em muitos casos o problema está no scanf() anterior. Se tentar e não encontrar um post meu com esse programa aqui e tiver interesse escreva de novo e eu procuro em meus arquivos. Não é um erro da rotina: ela foi escrita com um outro propósito e por gente muito muito muito competente.

    @arfneto Interessante! Vou procurar dar uma olhada neste post.

  2. @KXSY Ola, primeiramente obrigado pelo feedback, talvez seja meu compilador, sou iniciante e o professor da minha faculdade recomendou usar o CodeBlocks, e o sistema que eu uso é o Windows. Sobre o programa é um exercício que comecei a fazer (isso ae é apenas o começo) que tem como objetivo gerenciar uma locadora. Dependendo do tipo de fita (Se for comum ou lançamento)  e o dia da semana( de 1 a 7) o programa irá acrescentar um acréscimo ou um desconto em cima da fita escolhida (ainda não fiz essa parte). Os testes escritos no printf eram só pra testar se as funções if e else estavam retornando corretamente. Agora eu não entendo porque aí no seu funcionou e aqui n kkk. Enfim, vou tentar trocar de IDE pra ver se da certo. Ah e apenas mais uma duvida porque o scanf está errado? Eu sei que ele não é o mais adequado, mas pelo que eu li e me foi falado não tem problema usar pra ler strings em programas simples (pelo menos para iniciantes). Obrigado.

     

  3.  .Ola pessoal, estou desenvolvendo alguns programas básicos para aprender a linguagem C, porém estou tendo um problema muito estranho neste programa. Quando eu tento comparar a palavra = LANÇAMENTO, o programa simplesmente não compara, porém quando eu mudo para LANCAMENTO sem o Ç ele funciona normalmente. Primeiro achei que era normal, pois não tinha colocado a biblioteca locale.h, mas depois de ter colocado ainda continua a mesma coisa. Segue o código abaixo: 

     

     

     #include <stdio.h>
     #include <math.h>
     #include <string.h>
     #include <locale.h>
    
     int main (){
    
     setlocale(LC_ALL, "Portuguese");
    
     float desconto, lancamento, preco;
     char fita [50];
     int dia;
    
     desconto= 0.40;
     lancamento= 0.15;
    
     printf (" Dia da semana: ");
     scanf  ("%d", &dia);
    
    
    
     printf (" Tipo de fita:  ");
     scanf  ("%s", &fita);
    
    
    
     printf (" Preco da fita: ");
     scanf  ("%f", &preco);
    
     if (((strcmp (fita, "COMUM")) ==0 || (strcmp (fita, "comum"))==0) && (dia == 2 || dia ==3 || dia == 5)) {
    
        printf ("teste");
    
     } else if (((strcmp (fita, "COMUM")) ==0 || (strcmp (fita, "comum"))==0) && (dia == 4 || dia ==6 || dia == 7 || dia == 1)) {
    
        printf ("teste2");
    
     } else if (((strcmp (fita, "LANCAMENTO")) ==0 || (strcmp (fita, "lancamento"))==0) && (dia == 2 || dia ==3 || dia == 5)) {
    
       printf ("teste3");
    
     } else if (((strcmp (fita, "LANCAMENTO")) ==0 || (strcmp (fita, "lancamento"))==0) && (dia == 4 || dia ==6 || dia == 7 || dia == 1)) {
    
         printf ("teste4");
    
     }
    
     system("pause");
     Return: 0;
    
    
     }

     

    Bom, desta forma funciona corretamente, agora quando eu coloco pra comparar LANÇAMENTO ou lançamento, aí que da *****. Mal comecei a fazer o programa e já estou preso nesta questão kkk, quem souber responder qual é o problema agradeço desde já. 

    • Curtir 1

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!