Ir ao conteúdo

Posts recomendados

Postado

Faça um programa que lê um número n e em seguida lê dados de n exames: A1;A2; : : : ;An. Cada exame Ai tem o nome do paciente, Nomei; uma taxa de xolesterol Xi (número entre 0 e 100); uma taxa de broteinas e Bi (número entre -10 e 10) e uma taxa de toroteinas Ti (um valor entre 5000 e 10000). Todos os valores numéricos são reais. 

Pessoas normais tem valores de Xi 2 [30; 50], Bi 2 [􀀀3; 7], Ti 2 [6500; 8000]. Os pacientes que tem taxa de xolesterol abaixo (acima) do normal, têm hipoxolesterol (hiperxolesterol). Os que tem taxa de broteinas abaixo (acima) do normal, têm hipobroteina (hiperbroteina). As que tem taxa de toroteinas abaixo (acima) do normal, têm hipotoroteinas (hipertoroteinas). Seu programa deve imprimir todos os pacientes que apresentam alguma doença. Para cada uma, deve se:

(a) imprimir qual o tipo de doença que ela apresenta.

(b) se ela apresentar duas doenças, deve se escrever que o estado do paciente é grave.

(c) se ela apresentar três doenças, deve se escrever que o estado do paciente é muito grave.

 

Não estou conseguindo resolver este exercício, comecei com o básico, mas não sei como colocar tudo isso em uma matriz e, não sei como continuar o exercício.

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

int main() 
{

    char exames[3][3] = {0} ,i,j;

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

        for(j = 0; j < 3;j++){

    printf("Digite o nome do paciente :\t");
    scanf("%s",&exames[i][0]);

    printf("Digite a taxa de Xolesterol :\t");
    scanf("%s",&exames[i][1]);

    printf("Digite a taxa de Broteinas :\t");
    scanf("%s",&exames[i][2]);

    printf("Digite a taxa de Toroteinas :\t");
    scanf("%s",&exames[i][3]);

    }
    }

    return 0;
}
OBS: Gostaria apenas de um rumo a seguir, não necessariamente o código pronto, obrigado.

 

  • Obrigado 1
Postado

Olá Parolini, como vai?

 

Tudo isso vai custar um pastel e um caldo de cana, ok?

 

Como você disse que não quer o código, vou te passar o algoritmo(receita de bolo) que tu podes transformar em código.

 

Pelo o que eu percebi no enunciado ele está pedindo para LER o um número n e retornar um valor n de exames, eu imaginei você digitando 5 e aparecendo os 5 primeiros exames ou tu escolheres 5 exames num intervalo, por exemplo, de 10 à 14, entendeu? Esses dados estariam supostamente num banco de dados.

 

Para você LER cada exame, eles tem que ter dados, correto? Você teria que inserir isso no software e ele ficar rodando ou mandar tudo isso para uma database. Crie uma variável para armazenar o nome; Uma para colocar o xolesterol, ou seja, "unsigned int" e realizar teste se vai de 0 a 100, em outra palavras, um número natural; uma para a taxa de broteinas de -10 à 10, ou seja, número inteiro, não utilize "unsigned", faça novamente o teste e prossiga com o sistema; e a taxa de toroteina de 6500 à 10000, faça o teste, pode utilizar unsigned, pois é natural.

 

Realize em seguida uma condição SE xolesterol estiver entre 30 e 50 o sujeito é normal, broteina de 3 à 7 e toroteina de 6500 à 8000 é normal, CASO CONTRARIO, você manipula isso e faça outras verificações para analisar se é HIPER ou HIPO.

 

Crie a variável doença, onde você pode enumerar, por exemplo, "char doenca;" se receber o valor 0, significa SEM DOENÇA, valor 1 xolesterol, 11 é HIPER, 12 é HIPO, enfim, acho que entendeu, você vai precisar disso, pois no final vai ter que imprimir a doença.

 

Crie também a variavel armazenando o estado do paciente se é grave, muito grave, enfim, no mesmo esqueça numérico acima, só que você pode começar a bugar, por que eu já estou imaginando seu código cheio de 0, 1, 2, 3 KKKKK.

 

Gostei desse desafio, espero que tenha te ajudado.

 

 

Até a próxima.

 

BY ZTM

 

 

  • Curtir 1
  • Obrigado 1
Postado

Olá Parolini, verifiquei que talvez o objetivo principal seria a questão da matriz, correto? Só que na minha cabeça não está fazendo sentido, por que teria que estar tudo armazenado numa database, ou irá ficar consumindo gradativamente a sua memória a cada dado que você for colocando na matriz.

 

Se mesmo assim você quiser colocar tudo isso numa matriz é simples: faça um LOOP que questione todas as perguntas e jogue na posição da matriz, igual você fez, só que faça uma condição para pessoa dar um break desse LOOP, por exemplo, se o sujeito quiser imprimir os exames na tela, entendeu?

 

Não consigo ver grandes problemas nessa questão da matriz.

  • Obrigado 1
Postado

@João Parolini Fique tranquilo "meu chapa", eu nem faço faculdade e estou te ajudando, você vai com certeza conseguir, isso só depende do quão rápido você entender as coisas e absorver, ou seja, uma cognição boa.

 

Imagine que eu sou aquele(a) atendente de supermercado te ajudando no trabalho de faculdade.

 

Entenda o conceito de vetores, matrizes bidimensionais, linhas, colunas.

 

Quando você declara por exemplo uma matriz de [10][10], feche os olhos e imagine 10 linhas que vai de 0 a 9, uma em baixo da outra, correto? respirou? linhas são na horizontal, ok? agora imagine que cada linha dessa tem 10 colunas, na vertical, entendeu? fica parecendo aquelas tabela de excel kkkk.

 

Se eu falar para você eu quero a posição [5][3], o que você vai fazer? Linha 5, Coluna 3. Mas nunca se esqueça que na programação a posição [0][0] também é válida, ou seja, vai de [0][0] que é a primeira posição até [9][9], entendeu? do [0][0] até [0][9] tem 10 posições multiplica por 10, ou seja, 10x10 = 100 posições MEU CHAPA.

 

VALEUU.

  • Curtir 1
Postado
1 hora atrás, João Parolini disse:

Faça um programa que lê um número n e em seguida lê dados de n exames: A1;A2; : : : ;An. Cada exame Ai tem o nome do paciente, Nomei; uma taxa de xolesterol Xi (número entre 0 e 100); uma taxa de broteinas e Bi (número entre -10 e 10) e uma taxa de toroteinas Ti (um valor entre 5000 e 10000). Todos os valores numéricos são reais. 

 

Escreva em torno dos dados e comece claro pelos dados. Veja o que diz aí:

  • todos os valores numéricos são reais.
  • no início tem um N que é o total de exames (não precisava, já que uma lista tem que ter um fim).
  • Cada linha tem um nome e 3 valores.
    • valor 1 entre 0 e 100
    • valor 2 entre -10 e 10
    • valor 3 entre 5000 e 10000

Então uma coisa dessas podia ser

 

3
Nome Um                      12. -9.5 5500.
Nome Dois                    12. +9.5 5500.
Nome Tres                    89. 9.55 6500.

 

Os nomes com 25 letrinhas e depois os números. Com decimais porque está escrito lá que devem ser números reais e não inteiros apesar de serem inteiros nos exemplos. Com sinais porque é preciso testar antes que o cara use isso na correção do programa 🙂 

 

Então comece por escrever um programa para ler essa coisa ao invés de perder tempo escrevendo um programa inteiro sem testar nadinha.

 

Digite o arquivo no próprio editor que está usando. É trivial tratar arquivos em C  essa linguagem foi escrita para criar um sistema (Unix) onde TUDO é arquivo.

 

E faça um pequeno programa antes de tudo... É o simples.

Esqueça o resto antes de conseguir ler os dados. Só vai perder tempo.

 

 

 

Use o botão code como explicado no primeiro post do forum. Veja  a diferença:
 

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

int main() 
{

    char exames[3][3] = {0} ,i,j;

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

        for(j = 0; j < 3;j++){

    printf("Digite o nome do paciente :\t");
    scanf("%s",&exames[i][0]);

    printf("Digite a taxa de Xolesterol :\t");
    scanf("%s",&exames[i][1]);

    printf("Digite a taxa de Broteinas :\t");
    scanf("%s",&exames[i][2]);

    printf("Digite a taxa de Toroteinas :\t");
    scanf("%s",&exames[i][3]);

    }
    }

    return 0;
}

 

Nunca escreva um programa interativo. Só vai perder tempo.

 

Sobre o que escreveu:

 

Como eu disse, não é uma boa maneira de começar. NUNCA escreva um programa interativo. Só perde tempo.

Leia o manual: TESTE o retorno de scanf(). É ingênuo seguir se não ler nada.

declare variáveis de controle do for DENTRO do for. Você não quer uma variável com um nome ingênuo de i ou j solta pelo programa todo.

  • Obrigado 1
  • Haha 1
Postado

@João Parolini     essa matriz  foi criada com 3 elementos , mas você está colocando 4  coisas na hora de preencher ,  e como ela é de string , então precisa de mais uma dimensão ,  senão ela só poderia receber um caractere em cada coluna ,  e como são string's  não precisa informar o endereço dessa variável  , pois de algum modo bem desconhecido , o compilador já sabe o endereço    "&"   dela ,  e usando fgets evita de que  o usuário digite algum dado inválido  ,por exemplo era para digitar número e digitou letra , e travar o programa todo ,  e uma função que mostra o que foi cadastrado .

#define     WIN32_WINNT 0x600
#include    <stdio.h>
#include    <conio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <windows.h>
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
/*
  Faça um programa que lê um número n e em seguida lê dados de n exames:
  A1;A2; : : : ;An. Cada exame Ai tem o nome do paciente, Nomei; uma taxa
  de xolesterol Xi (número entre 0 e 100); uma taxa de broteinas e
  Bi (número entre -10 e 10) e uma taxa de toroteinas Ti (um valor entre
  5000 e 10000). Todos os valores numéricos são reais.
  Pessoas normais tem valores de Xi 2 [30; 50], Bi 2 [􀀀3; 7], Ti 2
  [6500; 8000]. Os pacientes que tem taxa de xolesterol abaixo (acima)
  do normal, têm hipoxolesterol (hiperxolesterol). Os que tem taxa de
  broteinas abaixo (acima) do normal, têm hipobroteina (hiperbroteina).
  As que tem taxa de toroteinas abaixo (acima) do normal, têm hipotoroteinas
  (hipertoroteinas). Seu programa deve imprimir todos os pacientes
  que apresentam alguma doença. Para cada uma, deve se:
  (a) imprimir qual o tipo de doença que ela apresenta.
  (b) se ela apresentar duas doenças, deve se escrever que o estado do paciente é grave.
  (c) se ela apresentar três doenças, deve se escrever que o estado do paciente é muito grave.
*/
char Listar( char ex[30][4][10] , int );
int main()
{
  char a[10];
  char exames[30][4][10] = {0};
  int  i             =  0 ;
  int  j             =  0 ;
  int  n             =  0 ;
  char aux[] = { "32768" };
L1:                                       /// Label p onde o goto voltar
  printf("A Quantidade de ExaMes ");
  fgets( aux, sizeof( aux ), stdin );     /// isso evita q seja inserdo dados inválidos
  n = atoi( aux );                        /// pois string aceita qq caract
  if( ! n )                               /// se n For igual a zero
    goto L1;                              /// volta a pedir p informar o nUmero
  printf( "\n" );
  for( int i=0; i<n; i++ )                /// alguns compiladores aceitam
  {                                       /// criar a variAvel dentro do Loop
      printf(" Nome do paciente ---: ");
      scanf ("%s", & exames[i][0]     );  /// só precisa de um loop , pois as Quatro colunas
      printf(" Taxa de Xolesterol -: ");  /// de cada Linha da Matriz serAo preenchidas a cada
      scanf ("%s",   exames[i][1]     );  /// passada do Loop
      printf(" Taxa de Broteinas --: ");
      scanf ("%s",   exames[i][2]     );
      printf(" Taxa de Toroteinas -: ");  /// para string não precisa desse sImbolo "&"
      scanf ("%s",   exames[i][3]     );  /// pois jA tem o endereCo da variAvel
      printf( "\n" );
      for( int j=0; j<4; j++ )
      {                                   /// aqui só para ver se digitou e estA funcionando bem
        printf( "Exames[%d][%d] -> %s\n" ,i,j, exames[i][j] );
      }
      printf( "\n" );
  }
  Listar( exames, n );
  /*strcpy( a , Listar( exames, n   ) );
  printf( "Retornou -> %8s\n\n\n",a);*/
  return 0;
}
char Listar( char exames[][4][10], int n )
{
  printf( "\nListando Todos Os %d PaciEntes:\n\n",n );
  for( int i=0; i<n; i++ )
  {
    printf(" Nome do paciente ---: %s\n"
           " Taxa de Xolesterol -: %s\n"
           " Taxa de Broteinas --: %s\n"
           " Taxa de Toroteinas -: %s\n",
           exames[i][0], exames[i][1],
           exames[i][2], exames[i][3] );
    printf( "     ----\n" );           
  }
  return "a";
}

 

  • Curtir 2

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