Ir ao conteúdo
  • Cadastre-se

C Cadastro e calculo de IMC em C


urii

Posts recomendados

Oi, gente! Tudo bom? Então, eu tô desde que acordei tentando fazer esse trabalho mas não estou conseguindo. Já tentei de várias formas e nunca da certo, eu queria ajuda para tentar fazer o seguinte trabalho: 

O programa deve cadastrar alunos.

 

 

* Uma função separada para calcular o imc, ela recebe dois valores em ponto flutuante (peso e altura) e retorna um valor (o imc) em ponto flutuante.
* Uma estrutura chamada Aluno onde será armazenado nome, e-mail, peso e altura.
* Um vetor de 20 posições que armazenará as estruturas.
* Uma tela de menu, que terá as seguintes opções:

1. Cadastra aluno (apenas 1, escolhendo a posição de 1 a 20).
2. Listar alunos.
3. Apagar aluno (pode apagar pela posição na lista).
4. Listar IMC de alunos (lista todos os nomes, com o valor do IMC e a condição para o IMC de acordo com a tabela acima).
0. Sair.

O programa deve permanecer em execução até o usuário escolher a opção "Sair".

* Lembre-se de que números decimais são escritos com ponto (.) ao invés de vírgula (,).

Um ótimo trabalho a todos!


- Para auxilia-lo na elaboração deste algoritmo, utilize o programa DevC++ (outros programas como CodeBlocks, também podem ser utilizados).
- A atividade deve ser realizada obrigatoriamente utilizando a Linguagem C. Linguagens como PHP, JAVA, entre outras não serão aceitas. 
 

 

CÁLCULO PARA O IMC:   IMC= MASSA / (ALTURA²)

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@urii, por favor, poste o que conseguiu fazer e onde está com dúvidas.

 

 

Uma sugestão é tenta fazer ao poucos... Por exemplo, tente implementar isso:

8 horas atrás, urii disse:

* Uma estrutura chamada Aluno onde será armazenado nome, e-mail, peso e altura.
* Um vetor de 20 posições que armazenará as estruturas.

 

E posta aqui.

 

 

No aguardo.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

10 horas atrás, urii disse:

Ah, sim. Mas é isso mesmo que quero, uns links para tentar ajudar. É que já olhei em vários sites, vídeo-aulas de vários outros exercícios e tento adaptar para esse trabalho, só que sempre sai tudo errado :(

É assim mesmo, tem uma curva de aprendizado. Mas tem que tentar fazer para compreender os conceitos envolvidos. E ajudamos a esclarecer as dúvidas que forem surgindo.

Link para o comentário
Compartilhar em outros sites

Então gente, meu código é esse:
 

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

void inserir (void);
void mostrar(void);
void excluir(void);
void mostrarimc(void);
int i;
struct registro{
    
    char matricula;
    char nome;
    char email;
    float peso, altura;
    
    
};
    struct registro vetor[20];
    
    
    int num;
    
     

int main(void) {
    float imc;
    
    
    for (;;)
    {
        printf("\n Bem-Vindo! Escolha uma Opcao Abaixo:");
        printf("1- Cadastrar Aluno\n");
        printf("2- Listar Alunos");
        printf("3- Excluir Alunos");
        printf("4- Listar IMC");
        printf("0- Sair");
        
        scanf("%d" &num);
        switch(num)
        {
            case 1: inserir ();
            break;
            case 2: mostrar ();
            break;
            case 3: excluir ();
            break;
            case 4: mostrarimc();
            break;
            case 0: exit(0);
            default: puts ("Tente Novamente");
            
            
            
            
        }
        
        
        
        
        
    }
    getchar ();
    
    void inserir (void)
    {
        for (i=0; i<10; i++);{
        
        fflush (stdin);
        printf("\n Qual a matricula do Aluno? \n ");
        gets(vetor.matricula);
        fflush (stdin);
        Printf("\n Nome do aluno: \n");
        gets(vetor.nome);
        fflush (stdin);
        printf("\n E-mail do aluno: \n");
        gets(vetor.email);
        fflush (stdin);
        printf("\n Peso do aluno: \n");
        gets(vetor.peso);
        fflush (stdin);
        printf("\n Altura do Aluno \n");
        gets(vetor.altura);
        fflush(stdin);
        
        
        
        
        }
        
    getche();    
        
    }
    void mostrar(void)
    
    { 
    int i;
    
        for (i=0,i<10; i++){
            
            printf("\n Matricula do Aluno: %s", vetor.matricula);
            printf("\n Nome do Aluno: %s", vetor.nome);
            printf("\n E-mail do Aluno: %s", vetor.email);
            printf("\n IMC do Aluno: %f", &imc);
            
            
            
        }
    
    
    
    
    }
    
    void excluir (void)
    {
        char matricula;
        
        printf("Qual a Matricula do Aluno que voce deseja remover? \n");
        gets(matricula);
            for(i=0; i<10; i++){
                
                if ((strcmp(matricula,vetor.matricula))==0)
                for ( ;i<9; i++){
                    
                    strcpy(vetor.matricula, vetor[i+1].matricula);
                    strpy(vetor.nome, vetor[i+1].nome);
                    strpy(vetor.email, vetor[i+1].email );
                    strpy(vetor.peso, vetor[i+1].peso);
                    strpy(vetor.altura, vetor[i+1].altura);
                    
                    
                }
                
            }
        getche();
        
    }
    
    
    return 0;
} 

 

Ta dando erro ao compilar e ainda não sei onde por a conversão do peso e massa em IMC 

Link para o comentário
Compartilhar em outros sites

@urii Para o fórum [ i ] sem espaços é a tag para deixar o texto em itálico, por isso todos os [ i ] do seu código sumiram (e o texto está em itálico a partir do primeiro lugar onde deveria ter um [ i ]).

 

Para evitar que esse tipo de coisa aconteça use o botão < > (Code) para postar códigos no fórum (vide minha assinatura abaixo).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

void inserir (void);
void mostrar(void);
void excluir(void);
void mostrarimc(void);
int i;
struct registro{
	
	char matricula;
	char nome;
	char email;
	float peso, altura;
	
	
};
	struct registro vetor[20];
	
	
	int num;
	
	 

int main(void) {
	float imc;
	
	
	for (;;)
	{
		printf("\n Bem-Vindo! Escolha uma Opcao Abaixo:");
		printf("1- Cadastrar Aluno\n");
		printf("2- Listar Alunos");
		printf("3- Excluir Alunos");
		printf("4- Listar IMC");
		printf("0- Sair");
		
		scanf("%d" &num);
		switch(num)
		{
			case 1: inserir ();
			break;
			case 2: mostrar ();
			break;
			case 3: excluir ();
			break;
			case 4: mostrarimc();
			break;
			case 0: exit(0);
			default: puts ("Tente Novamente");
			
			
			
			
		}
		
		
		
		
		
	}
	getchar ();
	
	void inserir (void)
	{
		for (i=0; i<10; i++);{
		
		fflush (stdin);
		printf("\n Qual a matricula do Aluno? \n ");
		gets(vetor[i].matricula);
		fflush (stdin);
		Printf("\n Nome do aluno: \n");
		gets(vetor[i].nome);
		fflush (stdin);
		printf("\n E-mail do aluno: \n");
		gets(vetor[i].email);
		fflush (stdin);
		printf("\n Peso do aluno: \n");
		gets(vetor[i].peso);
		fflush (stdin);
		printf("\n Altura do Aluno \n");
		gets(vetor[i].altura);
		fflush(stdin);
		
		
		
		
		}
		
	getche();	
		
	}
	void mostrar(void)
	
	{ 
	int i;
	
		for (i=0,i<10; i++){
			
			printf("\n Matricula do Aluno: %s", vetor[i].matricula);
			printf("\n Nome do Aluno: %s", vetor[i].nome);
			printf("\n E-mail do Aluno: %s", vetor[i].email);
			printf("\n IMC do Aluno: %f", &imc);
			
			
			
		}
	
	
	
	
	}
	
	void excluir (void)
	{
		char matricula;
		
		printf("Qual a Matricula do Aluno que voce deseja remover? \n");
		gets(matricula);
			for(i=0; i<10; i++){
				
				if ((strcmp(matricula,vetor[i].matricula))==0)
				for ( ;i<9; i++){
					
					strcpy(vetor[i].matricula, vetor[i+1].matricula);
					strpy(vetor[i].nome, vetor[i+1].nome);
					strpy(vetor[i].email, vetor[i+1].email );
					strpy(vetor[i].peso, vetor[i+1].peso);
					strpy(vetor[i].altura, vetor[i+1].altura);
					
					
				}
				
			}
		getche();
		
	}
	
	
	return 0;
}

Opa, foi mal. Sou novo no fórum 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Oi, Galera. Tudo bom? Então, eu tô com um trabalho pra fazer, até postei aqui pedindo ajuda mas acabei esquecendo de por o código. Então assim, tenho um trabalho e tenho que fazer o que está nas duas imagens. Por enquanto o meu código está assim: 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

void inserir (void);
void mostrar(void);
void excluir(void);
void mostrarimc(void);
int i;
struct registro{
	
	char matricula;
	char nome;
	char email;
	float peso, altura;
	
	
};
	struct registro vetor[20];
	
	
	int num;
	
	 

int main(void) {
	float imc;
	
	
	for (;;)
	{
		printf("\n Bem-Vindo! Escolha uma Opcao Abaixo:");
		printf("1- Cadastrar Aluno\n");
		printf("2- Listar Alunos");
		printf("3- Excluir Alunos");
		printf("4- Listar IMC");
		printf("0- Sair");
		
		scanf("%d" &num);
		switch(num)
		{
			case 1: inserir ();
			break;
			case 2: mostrar ();
			break;
			case 3: excluir ();
			break;
			case 4: mostrarimc();
			break;
			case 0: exit(0);
			default: puts ("Tente Novamente");
			
			
			
			
		}
		
		
		
		
		
	}
	getchar ();
	
	void inserir (void)
	{
		for (i=0; i<10; i++);{
		
		fflush (stdin);
		printf("\n Qual a matricula do Aluno? \n ");
		gets(vetor[i].matricula);
		fflush (stdin);
		Printf("\n Nome do aluno: \n");
		gets(vetor[i].nome);
		fflush (stdin);
		printf("\n E-mail do aluno: \n");
		gets(vetor[i].email);
		fflush (stdin);
		printf("\n Peso do aluno: \n");
		gets(vetor[i].peso);
		fflush (stdin);
		printf("\n Altura do Aluno \n");
		gets(vetor[i].altura);
		fflush(stdin);
		
		
		
		
		}
		
	getche();	
		
	}
	void mostrar(void)
	
	{ 
	int i;
	
		for (i=0,i<10; i++){
			
			printf("\n Matricula do Aluno: %s", vetor[i].matricula);
			printf("\n Nome do Aluno: %s", vetor[i].nome);
			printf("\n E-mail do Aluno: %s", vetor[i].email);
			printf("\n IMC do Aluno: %f", &imc);
			
			
			
		}
	
	
	
	
	}
	
	void excluir (void)
	{
		char matricula;
		
		printf("Qual a Matricula do Aluno que voce deseja remover? \n");
		gets(matricula);
			for(i=0; i<10; i++){
				
				if ((strcmp(matricula,vetor[i].matricula))==0)
				for ( ;i<9; i++){
					
					strcpy(vetor[i].matricula, vetor[i+1].matricula);
					strpy(vetor[i].nome, vetor[i+1].nome);
					strpy(vetor[i].email, vetor[i+1].email );
					strpy(vetor[i].peso, vetor[i+1].peso);
					strpy(vetor[i].altura, vetor[i+1].altura);
					
					
				}
				
			}
		getche();
		
	}
	
	
	return 0;
}

 Só que não ta dando certo para compilar e eu ainda tenho que descobrir como por o algoritmo de conversão no meio disso aí. Valeu, galero. 

1.PNG

2.PNG

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, urii disse:

scanf("%d" &num);

Aqui faltou uma vírgula

 

38 minutos atrás, urii disse:

for (i=0; i<10; i++);{

Aqui não precisa desse ponto e vírgula

 
38 minutos atrás, urii disse:

for (i=0,i<10; i++){

Aqui é um ponto e vírgula

 

Além disso, não sei como te ajudar, não sou muito familiar com manipulação de strings em C

adicionado 15 minutos depois
50 minutos atrás, urii disse:

gets

Recomendaria usar 

scanf("%s",&NomeDaString);

e se não me engano, não deveria existir a variável matrícula no problema, a matrícula seria a ordem do aluno no vetor

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 12/06/2018 às 21:43, urii disse:

Então, @Ploita... Ainda não hahahaha. Tive que estudar para outra prova, mas tenho até o dia 26 para entregar esse trabalho, até lá eu aprendo hahahaha. Mas muito obrigado por tentar ajudar!

olá estou tento o mesmo trabalho que o seu e também estou com  dificuldades caso consiga me  visa por favor!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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