Ir ao conteúdo
  • Cadastre-se

Calculo de IMC com vetores


Allejoo

Posts recomendados

Boa noite galera do CdH.

 

Estou com dúvidas referente a um exercicio usando struct, vetores e mais função de decisão.

 

Eu não sei como desenvolver o cálculo, queria uma ajuda de vocês.

 

Enredo: 

Escrever um programa que cadastre o nome, altura, peso e o RG de 5 pessoas.
Com os dados cadastrados, em seguida localizar uma pessoa através do seu RG e imprimir o seu IMC (Índice de Massa Corporal). A fórmula para o cálculo do IMC é peso/(altura)².
#include <stdio.h>struct pessoa {	char nome[40];	float altura;	float peso;	int RG[10];};int main(){	int IMC;	int cont;		struct pessoa p1[5];	for(cont = 0; cont < 5; cont++){				printf("Digite o nome da pessoa: ");		fflush(stdin);		gets(p1[cont].nome);				printf("Digite o RG da pessoa [10 caracteres apenas]: ");		scanf("%d", &p1[cont].RG);				printf("Digite a altura da pessoa: ");		scanf("%f", &p1[cont].altura);						printf("Digite o peso da pessoa: ");		scanf("%f", &p1[cont].peso);			}	            for(cont = 0; cont < 5; cont++){            	printf("\nNome da pessoa: %s\n", p1[cont].nome);            	printf("\nRG: %d\n", p1[cont].RG);            	printf("\nAltura: %2.f\n", p1[cont].altura);            	printf("\nPeso: %2.f\n", p1[cont].peso);                                                	                        if(cont >= 0 && cont < 5){				printf("Digite o numero da pessoa: ");            	scanf("%d", &p1[cont].RG);				printf("Nome da pessoa: %s", p1[cont].nome);				printf("RG: %d ", p1[cont].RG);				printf("Peso: %2.f | Altura: %2.f", p1[cont].peso, p1[cont].altura);				IMC = p1[cont].peso / (p1[cont].altura*p1[cont].altura);				printf("O IMC da pessoa é %d", IMC);				            }            else                printf("RG Cadastrado não encontrado");            }        }

Por exemplo, não sei como declarar uma função que pegue os dados que inseri, de acordo com o número que digitei (1 a 5, digite 1 — Apareceu Fulano de Tal, RG: 12345678910, Altura: 1,95, Peso: 95kg. Ai depois ele vai calcular

ICM: 95/1.95*1,95 — (1,95)²

 

sei que tem diversos erros no programa, ele não está calculando, nem pegando os if.

 

Mas alguém que saiba disto, poderia me dizer no que estou errando?

Alguém pode me ajudar? Dar dicas, qualquer coisa :(.

Link para o comentário
Compartilhar em outros sites

eu marquei com comentário, maneira de melhorar o que ainda não esta bom!

#include <stdio.h>struct pessoa {    char nome[40];    float altura;    float peso;    int RG[10];};int main(){    float IMC;    //fload    int cont;        struct pessoa p1[2];    for(cont = 0; cont < 2; cont++){        printf("Digite o nome da pessoa: ");        fflush(stdin);        gets(p1[cont].nome);        printf("Digite o RG da pessoa [10 caracteres apenas]: ");        scanf("%d", &p1[cont].RG);        printf("Digite a altura da pessoa: ");        scanf("%f", &p1[cont].altura);        printf("Digite o peso da pessoa: ");        scanf("%f", &p1[cont].peso);    }            for(cont = 0; cont < 2; cont++){                printf("\nNome da pessoa: %s\n", p1[cont].nome);                printf("\nRG: %d\n", p1[cont].RG);                printf("\nAltura: %.2f\n", p1[cont].altura);                //*1 Correto printf("\nAltura: %.2f\n", p1[cont].altura);                printf("\nPeso: %.2f\n", p1[cont].peso);                //*2 Correto printf("\nPeso: %.2f\n", p1[cont].peso);            if(cont >= 0 && cont < 2){                printf("Digite o numero da pessoa: ");                scanf("%d", &p1[cont].RG);                //*3 RG ?? Tem certeza ?? Não faz sentido qual a sua intenção ??                printf("Nome da pessoa: %s", p1[cont].nome);                printf("RG: %d ", p1[cont].RG);                printf("Peso: %.2f | Altura: %.2f", p1[cont].peso, p1[cont].altura);                IMC = p1[cont].peso / ( (p1[cont].altura*p1[cont].altura) ) ;                //*4 precedência de operadores aritméticos () / * + -                printf("O IMC da pessoa é %.2f", IMC);                //*5 IMC também e fload.            }            else                printf("RG Cadastrado não encontrado");                //*5 Estou quase entendendo o motivo disso, mais ainda não entendo!            }}
Link para o comentário
Compartilhar em outros sites

 

eu marquei com comentário, maneira de melhorar o que ainda não esta bom!

#include <stdio.h>struct pessoa {    char nome[40];    float altura;    float peso;    int RG[10];};int main(){    float IMC;    //fload    int cont;        struct pessoa p1[2];    for(cont = 0; cont < 2; cont++){        printf("Digite o nome da pessoa: ");        fflush(stdin);        gets(p1[cont].nome);        printf("Digite o RG da pessoa [10 caracteres apenas]: ");        scanf("%d", &p1[cont].RG);        printf("Digite a altura da pessoa: ");        scanf("%f", &p1[cont].altura);        printf("Digite o peso da pessoa: ");        scanf("%f", &p1[cont].peso);    }            for(cont = 0; cont < 2; cont++){                printf("\nNome da pessoa: %s\n", p1[cont].nome);                printf("\nRG: %d\n", p1[cont].RG);                printf("\nAltura: %.2f\n", p1[cont].altura);                //*1 Correto printf("\nAltura: %.2f\n", p1[cont].altura);                printf("\nPeso: %.2f\n", p1[cont].peso);                //*2 Correto printf("\nPeso: %.2f\n", p1[cont].peso);            if(cont >= 0 && cont < 2){                printf("Digite o numero da pessoa: ");                scanf("%d", &p1[cont].RG);                //*3 RG ?? Tem certeza ?? Não faz sentido qual a sua intenção ??                printf("Nome da pessoa: %s", p1[cont].nome);                printf("RG: %d ", p1[cont].RG);                printf("Peso: %.2f | Altura: %.2f", p1[cont].peso, p1[cont].altura);                IMC = p1[cont].peso / ( (p1[cont].altura*p1[cont].altura) ) ;                //*4 precedência de operadores aritméticos () / * + -                printf("O IMC da pessoa é %.2f", IMC);                //*5 IMC também e fload.            }            else                printf("RG Cadastrado não encontrado");                //*5 Estou quase entendendo o motivo disso, mais ainda não entendo!            }}

No caso a intenção, e procurar pelo RG da pessoa, ai aparece as informações, logo a altura e peso. Com isso, o programa faz automático o cálculo sem eu ter que digitar novamente, sabe?

 

O motivo de float, porque é número com vírgula que quero que dê o resultado. 

Link para o comentário
Compartilhar em outros sites

Ok;

então para isso algumas modificações nesta parte tem que ser feita;

Observe como pode ser:

int buscar = 1;puts("Entre com numero de RG (-1 para sair):");scanf("%d", &buscar)while(buscar > 0){                for(cont = 0; cont < 2; cont++)         {            if(p1[cont].RG ==  buscar)            {                printf("Nome da pessoa: %s", p1[cont].nome);                printf("RG: %d ", p1[cont].RG);                printf("Peso: %.2f | Altura: %.2f", p1[cont].peso, p1[cont].altura);                IMC = p1[cont].peso / ( (p1[cont].altura*p1[cont].altura) ) ;                printf("O IMC da pessoa é %.2f", IMC);                entre = -1;            }        }        if(buscar!= -1) puts("RG Cadastrado não encontrado");        puts("Entre com numero de RG (-1 para sair):");        scanf("%d", &entre)}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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