Ir ao conteúdo

Posts recomendados

Postado

Olá, bom dia! 

Sou aluno de programação e estou fazendo um trabalho que consiste em montar um programa para cadastrar pacientes, vou deixar o enunciado aqui:

-Programa que defina uma lista de no máximo 20 pacientes, onde serão armazenados o nome, a altura, o peso, o sexo e o IMC de cada um.

Ele é um pouco mais complexo, só dei uma parte do enunciado para ter uma ideia. Enfim, vou colocar aqui o que fiz até agora e quero saber onde estou errando, o CodeBlocks diz que não estou declarando a variável 'altura', porém ela está declarada. 

Meu programa até agora:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct paciente {char nome[20],sexo; float altura,peso,IMC};
int main()
{ struct paciente cadastro[20], aux; int total,i, opcao, troca, achou;
  total =0;
  for(;;){
  printf("\n\nEscolha uma opcao:\n");
  printf("\t\t1.Incluir paciente\n\t\t2.Alterar registro de um paciente\n\t\t3.Excluir um paciente\n");
  printf("\t\t4.Procurar um paciente\n\t\t5.Mostrar lista de pacientes em ordem alfabetica\n\t\t6.Sair\n\t\t");
  scanf("%d",&opcao);
  switch(opcao) {
    case 1: {if (total <20) {
               printf("Nome:");       fflush(stdin);gets(cadastro[total].nome );
               printf("Altura:");     scanf("%f", &cadastro[total].altura);
               printf("Peso:");       scanf("%f", &cadastro[total].peso);
               printf("Sexo:");       fflush(stdin);gets(cadastro[total].sexo );
               printf("IMC:");        scanf("%f", &cadastro[total].IMC);
               cadastro[total].IMC=((cadastro[total].peso)/(cadastro[total].altura*altura));
               total=total+1; }

 

Erro está na linha 20: 'altura' undeclared (first use in this function)

Obrigado!

 

  • Curtir 1
Postado
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct paciente {
  char nome[20],sexo; 
  float altura, peso,IMC;
  };

int main()
{ 
  struct paciente cadastro[20], aux; 
  int total,i, opcao, troca, achou;
  total =0;
  for(;;){
    printf("\n\nEscolha uma opcao:\n");
    printf("\t\t1.Incluir paciente\n\t\t2.Alterar registro de um paciente\n\t\t3.Excluir um paciente\n");
    printf("\t\t4.Procurar um paciente\n\t\t5.Mostrar lista de pacientes em ordem alfabetica\n\t\t6.Sair\n\t\t");
    scanf("%d",&opcao);
    switch(opcao) {
      case 1:
        if (total <20) {
        printf("Nome:");
        scanf("%[^\n]s", cadastro[total].nome); //observe esse SCANF, ele captura uma string completa mesmo contendo espaço

        printf("Altura:");
        scanf("%f", &cadastro[total].altura);

        printf("Peso:");
        scanf("%f", &cadastro[total].peso);

        printf("Sexo:");
        scanf("%c", &cadastro[total].sexo);

        printf("IMC:");        scanf("%f", &cadastro[total].IMC);
        cadastro[total].IMC=(cadastro[total].peso/pow(cadastro[total].altura,2)); //função POW da lib math.h permite realizar contas de potencia, procura saber mais sobre
        ++total;
        }
    }
  }

  return 0;
}

dei uma "melhorada" no codigo... usei o GCC linux para compilar e rodou de boa, apenas warnings de variaveis nao declaradas. retirei algumas '{ }' a mais que tinham no codigo, acho que foi isso que nao fez o codeblocks funcionar

  • Curtir 1
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...