MtTech
Membro Junior
Registrado
98 Mensagens
12 Curtidas
Também não consegui entender o porquê disso, mas consegui resolver o problema. Notei que se você colocar setlocale(LC_ALL,"C") ou qualquer outra letra ou palavra, o programa vai correr certo. Então pesquisei um pouco e encontrei este site http://linguagemc.com.br/localizacao-de-programas-com-locale-h/ e lá mostra outra maneira de deixar o programa com a acentuação em Português. O código abaxio já deve funcionar certinho:
[code=C]
#include
#include
#include
#define LIMITE 30 //Limite do IMC - Se o IMC for maior que 30 é considerado obeso
int main(){
setlocale(LC_ALL, "Portuguese");
float altura, peso, imc;
printf("Digite sua altura: \n");
scanf("%f", &altura);
printf ("\nQual é seu peso? \n");
scanf("%f", &peso);
imc=peso/pow(altura,2);
printf("\nSeu IMC é: %2.2f \n\n" , imc);
if (imc<=LIMITE){
printf("\nVocê não é obeso. \n");
}
else printf ("\nVocê precisa emagrecer!\n");
getchar();
return 0;
}
[/code]
Fábio novato
Super Participante
Registrado
242 Mensagens
66 Curtidas
Então MtTech, quando imprimo:
printf ("%s" ,setlocale(LC_ALL, ""), a saída é mesmo C e com LC_All, NULL ele mostra Portuguese.Brazil.1252 ( acho que é isso, não sei se é invertido...rs estou no celular e não conferi).
O que não entendi é o porque que ao colocar setlocale após iniciar a função main ele pula meus printf's como se o buffer já estivesse cheio, como se o scanf para ler o " peso " já pegasse algum dado fazendo com que o programa não deixe digitar o peso.
O importante não é quantas vezes você cai e sim quantas você se levanta - Morihei Ueshiba, fundador do Aikido.
MtTech
Membro Junior
Registrado
98 Mensagens
12 Curtidas
Então MtTech, quando imprimo:
printf ("%s" ,setlocale(LC_ALL, ""), a saída é mesmo C e com LC_All, NULL ele mostra Portuguese.Brazil.1252 ( acho que é isso, não sei se é invertido...rs estou no celular e não conferi).
O que não entendi é o porque que ao colocar setlocale após iniciar a função main ele pula meus printf's como se o buffer já estivesse cheio, como se o scanf para ler o " peso " já pegasse algum dado fazendo com que o programa não deixe digitar o peso.
Mas você já experimentou como eu fiz colocar "Portuguese" é que eu rodei assim e deu na perfeição.
Fábio novato
Super Participante
Registrado
242 Mensagens
66 Curtidas
Parte ruim:
Já fiz com de todos os modos que até então tinha pesquisado mas não consegui e não deu certo.
Parte boa:
Esse problema abriu um novo campo de estudo, onde de agora em diante vou ler sobre Unicode, UTF-8 e sei que vai ser mais um passo para meu aprendizado.
Sobre meu programa, resolvi o problema da acentuação usando a tabela ASCII mesmo:
[code=C]#include
#include // biblioteca para usar função POW - potenciação
#define LIMITE 30 //Limite do IMC - Se o IMC for maior que 30 é considerado obeso
int main(){
float altura, peso, imc;
printf("Qual %c sua altura? \n", 130);
scanf("%f%*c", &altura);
printf ("\nQual %c seu peso? \n", 130);
scanf("%f%*c", &peso);
//Acentos em ASCII: letra 'E' agudo (é):130 letra 'E' com circumflexo(ê):136 letra 'A' com til (ã):198
imc=peso/pow(altura,2);
printf("\nSeu IMC %c:\n%2.2f \n" , 130, imc);
if (imc <= LIMITE){
printf("\nVoc%c n%co %c obeso. \n", 136, 198 , 130 );
}
else printf("\nVoc%c precisa emagrecer!\n" , 136);
getchar();
return 0;
}[/code]
Para quem quer saber mais sobre codificação de caracteres, sugiro que leia essa página. Muitos programadores que se dizem experientes talvez se surpreendam com o conteúdo da mesma.
Enfim, só me resta estudar e muito.
Tópico resolvido (ou quase...).
Abraço e obrigado, MtTech.
O importante não é quantas vezes você cai e sim quantas você se levanta - Morihei Ueshiba, fundador do Aikido.