Iniciante em C com dificuldade

1. Iniciante em C com dificuldade

Jeferson
Deis

(usa Ubuntu)

Enviado em 19/11/2012 - 13:00h

Olá pessoal; preciso de ajuda para resolver um problema com um programa que estou fazendo na escola.

Estou tentando fazer um programa que ao digitar altura e peso e de uma resposta de acordo com o calculo feito.

Esta dando falaha na compilação por causa de erros e eu não sei resolver o erro porque eu estou começando do zero a aprender linguagem C.

Abaixo esta o programa e os erros que o compilador mostra.

#include<stdio.h>
#include<math.h>
int main()
{
float a,p,m;
printf("Digite a sua Altura => ");
scanf("%f",&a);
printf("\nDigite o seu Peso => ");
scanf("%f",&p);
m=p/(a*a);
printf("\nSua massa corporal é => %.3f\n ",m);
if(m<18.5)
{
printf("Você esta muito magra(o); * Consulte um Médico * ");
}
else(m>=18.6)&&(m<=24.9)
{
printf("Parabens; Você esta Saudável. Continue assim.");
}
if(m>=25)&&(m<=29.9)
{
printf(" * Atenção * Você esta com Sobrepeso. Consulte um Médico.");
}
if(m>=30)&&(m<=34.9)
{
printf("* Atenção * Você esta com Obesidade Grau I. Consulte um Médico o mais rapido possivel.");
}
if(m>35)&&(m<=39.9)
{
printf("* Atenção * Você esta com Obesidade Grau II. Consulte um Médico Urgentemente.")
}
if(m>40)
{
printf("* Atenção * Você esta com Obesidade Grau III. Consulte um Médico Imediatamente.")
}

printf("\n< 18,5 Abaixo do Peso\n 18,6 – 24,9 Saudável\n 25 – 29,9 Sobrepeso\n 30,0 – 34,9 Obesidade Grau I\n 35,0 – 39,9 Obesidade Grau II (Severa)\n>= 40,0 Obesidade Grau III (Mórbida)");
getchar();
}

gcc -Wall -o "sem título" "sem título.c" (no diretório: /home/ubuntu/Área de Trabalho)
Compilação falhou.
sem título.c: Na função ‘main’:
sem título.c:16:6: aviso: statement with no effect [-Wunused-value]
sem título.c:17:1: erro: expected ‘;’ before ‘{’ token
sem título.c:39:1: aviso: control reaches end of non-void function [-Wreturn-type]



  


2. Re: Iniciante em C com dificuldade

Filippe
spolti

(usa Fedora)

Enviado em 19/11/2012 - 13:07h

ta ai:


#include<stdio.h>
#include<math.h>
int main()
{
float a,p,m;
printf("Digite a sua Altura => ");
scanf("%f",&a);
printf("\nDigite o seu Peso => ");
scanf("%f",&p);
m=p/(a*a);
printf("\nSua massa corporal é => %.3f\n ",m);
if(m<18.5){
printf("Você esta muito magra(o); * Consulte um Médico * ");
}else if ((m>=18.6)&&(m<=24.9)){
printf("Parabens; Você esta Saudável. Continue assim.");
}
if((m>=25)&&(m<=29.9)){
printf(" * Atenção * Você esta com Sobrepeso. Consulte um Médico.");
}
if((m>=30)&&(m<=34.9)){
printf("* Atenção * Você esta com Obesidade Grau I. Consulte um Médico o mais rapido possivel.");
}
if((m>35)&&(m<=39.9)){
printf("* Atenção * Você esta com Obesidade Grau II. Consulte um Médico Urgentemente.");
}
if(m>40){
printf("* Atenção * Você esta com Obesidade Grau III. Consulte um Médico Imediatamente.");
}

printf("\n< 18,5 Abaixo do Peso\n 18,6 – 24,9 Saudável\n 25 – 29,9 Sobrepeso\n 30,0 – 34,9 Obesidade Grau I\n 35,0 – 39,9 Obesidade Grau II (Severa)\n>= 40,0 Obesidade Grau III (Mórbida)");
getchar();
}



3. Re: Iniciante em C com dificuldade

Jeferson
Deis

(usa Ubuntu)

Enviado em 19/11/2012 - 14:06h

Obrigado pela ajuda. Deu certo.

Agora eu tentei incrementar pedindo para a passoa digitar o nome e nas respostas apareceria o nome a a recomendação.

Mas não deu certo.

Por favor me mostre onde eu errei.

#include<stdio.h>
#include<math.h>
int main()
{
float a,p,m;
char [50] n;
printf("Digite seu Nome =>");
scanf("%c",&n);
printf("Digite a sua Altura => ");
scanf("%f",&a);
printf("\nDigite o seu Peso => ");
scanf("%f",&p);
m=p/(a*a);
printf("\nSua massa corporal é => %.3f\n ",m);
if(m<18.5){
printf("\n"%c"Você esta muito magra(o).*Consulte um Médico* \n",n);


4. Re: Iniciante em C com dificuldade

deivide
dision08

(usa Ubuntu)

Enviado em 19/11/2012 - 15:05h

o certo na declaração da variavel é char n[50] e não char [50]n. Outra coisa, vc chamou o scanf com %c. O %c apenas faz a leitura de um caracter. Se vc quer fazer a leitura de mais de um (no caso uma string) utilize o %s. Abaixo seu codigo:



#include<stdio.h>
#include<math.h>
int main()
{
float a,p,m;
char n[50];
printf("Digite o seu nome => ");
scanf("%s",n);
printf("Digite a sua Altura => ");
scanf("%f",&a);
printf("\nDigite o seu Peso => ");
scanf("%f",&p);
m=p/(a*a);
printf("\nSua massa corporal é => %.3f\n ",m);
if(m<18.5){
printf("%s Você esta muito magra(o); * Consulte um Médico * ",n);
}else if ((m>=18.6)&&(m<=24.9)){
printf("Parabens %s; Você esta Saudável. Continue assim.",n);
}
if((m>=25)&&(m<=29.9)){
printf(" * Atenção * %s voce esta com Sobrepeso. Consulte um Médico.",n);
}
if((m>=30)&&(m<=34.9)){
printf("* Atenção * %s voce esta com Obesidade Grau I. Consulte um Médico o mais rapido possivel.",n);
}
if((m>35)&&(m<=39.9)){
printf("* Atenção * %s voce esta com Obesidade Grau II. Consulte um Médico Urgentemente.",n);
}
if(m>40){
printf("* Atenção * %s voce esta com Obesidade Grau III. Consulte um Médico Imediatamente.",n);
}

printf("\n< 18,5 Abaixo do Peso\n 18,6 – 24,9 Saudável\n 25 – 29,9 Sobrepeso\n 30,0 – 34,9 Obesidade Grau I\n 35,0 – 39,9 Obesidade Grau II (Severa)\n>= 40,0 Obesidade Grau III (Mórbida)");
getchar();
}


Perceba que quando eu chamei o "scanf("%s",n);" o n não está com o & seguido. Outra coisa, quando vc for utilizar o printf para variáveis faça como no exemplo acima, coloque o %[tipo] e depois a variável.



Espero ter ajudado.







5. Re: Iniciante em C com dificuldade

Jeferson
Deis

(usa Ubuntu)

Enviado em 19/11/2012 - 15:36h

Obrigado dision08 pela sua dica; vou copia-la e estuda-la.

Comente por favor. Fuçando eu consegui desse geito:

#include<stdio.h>
#include<math.h>
int main()
{
float a,p,m;
char n[50];
printf("Digite seu Nome => ");
gets (n);
printf("\nDigite a sua Altura => ");
scanf("%f",&a);
printf("\nDigite o seu Peso => ");
scanf("%f",&p);
m=p/(a*a);
printf("\nSua massa corporal é => %.3f\n ",m);
if(m<18.5){
printf("\n%s; você esta muito magra(o).\n\n* Consulte um Médico * \n",n);

E por ultima melhoria;como que eu faço para que sai no printf depois que a pessoa digitar o peso, saia na tela Kg? Digita 70 mas mostra 70Kg




6. Re: Iniciante em C com dificuldade

deivide
dision08

(usa Ubuntu)

Enviado em 19/11/2012 - 19:41h

acho melhor mostrar com um exemplo :)

int main()
{
float a;
printf("Digite seu peso: ");
scanf("%f",&a);
printf("Seu peso é: %fKg",a);
return 0;
}

Para colocar o Kg na saída em tela, é só vc pegar e colocar o Kg logo apos o "%f". Se vc testar esse exemplo vai perceber que a saida vai ficar com uns 6 zeros apos a vírgula.Isso acontece por causa do ponto flutuante. Para arrumar isso apenas formate as casas decimais no "%f" na hora de imprimir. NO exemplo acima:

int main()
{
float a;
printf("Digite seu peso: ");
scanf("%f",&a);
printf("Seu peso é: %2.2fKg",a);
return 0;
}

A casa a esquerda da vírgula representa o numero de casas a direitas que irão aparecer(inteiras) e a casa a esquerda mostra o numero de casas a esquerda que irão aparecer.


Atté




7. Re: Iniciante em C com dificuldade

Jeferson
Deis

(usa Ubuntu)

Enviado em 19/11/2012 - 20:20h

Mais uma vez agradeço a sua atenção dision08.

Eu não soube informar direito. Vou tentar explicar de uma outra forma.

É na hora em que eu digito o peso que eu quero que apereça o Kg antes de dar o enter.

Eu digito 60 e o Kg aparece.

Pode ser tambem que eu digito 60 dou enter e o kg aparece na frente do 60.

É possível?

E dision08 como eu estou començando aprender C no Linux; você poderia me dar dicas, apostilas. Me recomendar algum livro de programação em C para linux?


8. Re: Iniciante em C com dificuldade

deivide
dision08

(usa Ubuntu)

Enviado em 20/11/2012 - 10:43h

humm... não sei te dizer como fazer isso :\ . Mas com o scanf não dá certo. O C possui uma vasta biblioteca de funções. Tente dar uma pesquisada. As apostilas vc pode encontrar no site apostilando.com e no seguinte link: www.inf.unioeste.br/~guilherme/cursos/c.pdf. Mas não fique só nisso. A internet contém um monte de apostilas e tutoriais. E cara, não tem jeito, o negócio é estudar e treinar bastante!.




atte






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts