GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Criar um programa para calcular IMC de 10 atletas

Tags: #<Tag:0x00007f289837fa88> #<Tag:0x00007f289837f948>

Oi, estou tendo dificuldade para desenvolver um programa que faça um calculo IMC de até 10 atletas, podendo ser menos, e no final exiba o resultado do IMC, pela ordem alfabética dos atletas, Nome do atleta, peso, altura, IMC, categoria.
Categoria no caso seria:
IMC Categoria
Até 18,4 Abaixo do peso
De 18,5 a 24,9 Peso normal
De 25,0 a 29,9 Sobrepeso
De 30,0 a 34,9 Obesidade grau I
De 35,0 a 39,9 Obesidade grau II
Acima de 40,0 Obesidade grau III

Alguem pode me ajudar? pode ser em C++ ou em Java

Mostra para gente o que você tentou fazer até agora, onde teve dúvida e tal, se teve algum erro.

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

char nome[10][50];
float altura[10], peso[10], imc[10];
int opcoes;

void cadastro();
void lista();

int main (void){
do{
system(“cls”);
printf("\n----------Menu----------\n1 - Cadastrar Atleta\n2 - Listar Atletas Cadastrados\n3 - Sair\n\n");
scanf("%d", &opcoes);
switch(opcoes){
case 1:
cadastro();
break;
case 2:
lista();
break;
case 3:
system(“exit”);
break;
default:
printf(“Opcao Invalida”);
getchar();
getchar();
break;
}
}while(opcoes!=3);
}
void cadastro(){
static int linha;
do{
printf("\nDigite o nome do atleta: “);
scanf(”%s", &nome[linha]);
printf("\nDigite a altura do atleta: “);
scanf(”%f", &altura[linha]);
printf("\nDigite o peso do atleta: “);
scanf(”%f", &peso[linha]);
printf("\nDigite 1 para continuar ou outro valor para sair");
scanf("%d", &opcoes);
linha++;
}while(opcoes==1);

}

void lista(){
int i;

for(i=0;i<40;i++){
    if(peso[i]>0){
    imc[i]=(peso[i]/(altura[i]*altura[i]));
    printf("\nNome: %s\nAltura: %.1f\nPeso: %.1f\nIMC: %.1f\n", nome[i],altura[i],peso[i],imc[i]);
    }else{
    system("pause");
    }
}

}

Até agr foi isso, pra ordenar os nomes tem strcmp, mas n to sabendo usar, e como ordenaria os nomes, teria q ordenar os outros vetores tbm, e n sei fazer isso

import javax.swing.JOptionPane;

import java.util.Scanner;

public class Principal {

static int qtd = 0;	
  public static void main(String args[]) {
	  
	  Atleta atleta = new Atleta();
	  
	  int i, op;
	  atleta.cate = new String[30];
	  atleta.imc = new float[20];
	  atleta.nome = new String[20];
	  atleta.altura = new float[20];
	  atleta.peso = new float[20];
	  for(i=0;i<10;i++) {
		  qtd++;
		  atleta.nome[i] = JOptionPane.showInputDialog("Nome do atleta");
		  atleta.altura[i] =Float.parseFloat(JOptionPane.showInputDialog("Altura"));
		  atleta.peso[i] =Float.parseFloat(JOptionPane.showInputDialog("peso"));
		  atleta.imc[i] = (atleta.peso[i] / (atleta.altura[i] * atleta.altura[i]));
		  atleta.cate[i] = interpretacaoIMC(atleta);
		  op = JOptionPane.showConfirmDialog(null, "Parar de adicionar?");
		  if(op==0) {
			  JOptionPane.showMessageDialog(null, montaExibicao2(atleta));
		  }
	  }
	  
  }
  
  public static String montaExibicao2(Atleta altleta) {
		String exibicao = "";
		
		for(int i=0;i<qtd;i++) {
				 exibicao+="Nome: "+altleta.nome[i]+". --  "+"Altura: "+altleta.altura[i]+". -- "+"Peso: "+altleta.peso[i]+". -- "+"IMC: "+altleta.imc[i]+". -- "+"Categoria: "+altleta.cate[i]+"\n";
			 }
		return exibicao;
	}
  public static String interpretacaoIMC(Atleta imc) {
	  
	  for(int i=0;i<qtd;i++) {
		  if (imc.imc[i] <= 18.4) {
		         return("Abaixo do peso");
		    }else if ((imc.imc[i] >= 18.5) && (imc.imc[i] <= 24.9)) {
		         return("Peso normal");
		    }else if ((imc.imc[i] >= 25) && (imc.imc[i] <= 29.9)){
		         return("Sobrepeso");
		    }else if ((imc.imc[i] >= 30) && (imc.imc[i] <= 34.9)){
		         return("Obesidade grau I");
		    }else if ((imc.imc[i] >= 35) && (imc.imc[i] <= 39.9)){
		         return("Obesidade grau II");
		    }else { 
		         return("Obesidade grau III");
		    }
		  
	  }
	return null;
	 
  }

}
Fui pra java e fiz esse, ta mais completo, só falta a ordenação, criei uma classe Atleta

//