Ripper 0 Denunciar post Postado Novembro 4, 2009 Bom pessoal tenho que fazer isso: 1. Escreva um programa que leia uma lista de nomes (maximo 30 caracteres), idade (inteira), sexo (M ou F), peso e altura (reais). Prepare um arquivo com os dados a serem lidos, com no máximo 100 registros. Apresente as informações lidas na tela no formato de tabela, na ordem alfabetica. 2. Apresente as informações lidas na tela no formato de tabela, ordenadas por peso (crescente). 3. Apresente as informações lidas na tela no formato de tabela, ordenadas por altura (decrescente). 4. Apresente as informações lidas na tela no formato de tabela, ordenadas por IMC (crescente) e sua respectiva classificação. Cálculo de IMC O Índice de Massa Corporal (IMC) é uma medida do grau de obesidade de uma pessoa. Através do cálculo de IMC é possível saber se alguém está acima ou abaixo dos parâmetros ideais de peso para sua estatura. Calcular IMC requer a aplicação de uma fórmula: IMC= PESO (Kg) / (ALTURA (m)*ALTURA (m)). IMC é Kg por metro quadrado Tabela da Associação Brasileira para o Estudo da Obesidade, para saber como está seu índice: Tabela IMC Abaixo de 18,5 Você está abaixo do peso ideal Entre 18,5 e 24,9 Parabéns — você está em seu peso normal! Entre 25,0 e 29,9 Você está acima de seu peso (sobrepeso) Entre 30,0 e 34,9 Obesidade grau I Entre 35,0 e 39,9 Obesidade grau II Maior ou igual a 40,0 Obesidade grau III Fiz isso: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #define MAX 2 struct registro { char nome[30]; int idade; float altura, peso; char sexo; }; struct registro r[MAX]; void ORDEM_1() { int i; struct registro r[MAX]; for(i=0;i<MAX;i++){ char letra = 'A'; if((toupper(nome[0]) == letra )) { printf("%s",nome[31]);} else { letra = letra+1; if((toupper(nome[0]) == letra )) {printf("%s",nome[31]);} else { letra = letra+1;} } } } int main () { float b,c; int i,a,j; struct registro r[MAX]; for(i=0;i<MAX;i++) { printf("Digite o nome da %d pessoa: ",i+1); scanf("%s",&nome[30]); printf("\nDigite a idade da %d pessoa: ",i+1); scanf("%d",&idade); printf("\nDigite o sexo da %d pessoa: ",i+1); scanf("%c",&sexo); printf("\nDigite a altura da %d pessoa: ",i+1); scanf("%f",&altura); printf("\nDigite o peso da %d pessoa: ",i+1); scanf("%f",&peso); } printf("Digite como deseja exibir a tabela: \n"); printf(" \n\t 1- Por ordem alfabetica \n\t 2- Por ordem crescente de peso \n\t 3- Por ordem decrescente de altura \n\t 4- Por altura crescente de altura\n"); scanf("%d", a); if(a!=1 && a!=2 && a!=3 && a!=4) { printf("Digitou um numero invalido. Por favor digite novamente.");} switch(a) { case 1: ORDEM_1(); break; case 2: case 3: break; case 4: break; } return 0; } Bom não sei muito de structs e queria saber se pelo menos essa parte esta certa. Queria tambem saber como ordenar por ordem crescente e decrescente e porque quando tenho que colocar o sexo da pessoa o programa pula. A parte do imc ja tenho feita (so não sei ordenar). Outra dúvida: quando armazeno dados em r[1], ficam armazenados peso, idade, nome, etc..., ou tenho que coloca-los em forma de vetor ? Agradeço pela atenção e desculpem pelas muitas dúvidas. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 4, 2009 Pesquise sobre strcoll! e sobre o programa n fazer todas as leituras acrescente um token na hora que você faz a leitura, assim: scanf("%s%*c", var); []s Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Novembro 5, 2009 Só acrescentando o que o QuiZAUMMM disse, se tiver dúvidas a respeito desse token ("%*c"), procure por um tópico chamado "Porque não usar fflush(stdin) e system("pause")" no laboratório de códigos fontes, o subfórum de C/C++ Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Novembro 12, 2009 Bom pessoal, novamente venho pedir ajuda. Seguinte consegui fazer a ordem alfabetica e as ordens crescente e decrescente e o que eu queria saber agora e se depois que eu entrar com os dados (nome, sexo, altura etc) eu organizar por ordem alfabetica e "levar os outros dados" junto com o nome, tipo eu organizava os nomes e ao lado aparecesse a respectiva idade, sexo, altura etc referentes aquele nome ignorando as outras ordens (crescente e decrescente). Agradeço pela ajuda. Edit: Outra coisa: tem como eu colocar o nome completo da pessoa mesmo com o espaço e o programa funcionar ? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 13, 2009 Use algo + avançado da STL ele faz a ordenação para você. []s Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Novembro 13, 2009 Podem marcar como resolvido. Já consegui. Valeu pela ajuda. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites