Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jesseufrrj

Erro 'incompatible pointer type'

Recommended Posts

Boa noite galera,

 

Iniciante no C e se alguém puder me dar uma ajuda.

 

 

O programa pega os dados de pacientes, usa uma função para achar o "fator" e usa esse fator multiplicado pela idade para gerar o CA(condicionamento aeróbico). Devo usar estruturas, alocação dinâmica e ponteiro. Não consigo entender o erro.

 

 

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

typedef struct {
  char nome[30];
  int idade;
  float nbcr;
  float nbca;
} TPaciente;

void lerDados(TPaciente *P, int n);
int resistencia (TPaciente *P, int n); // Nessa linha aparece a seguinte mensagem de erro -> [Warning] passing argument 1 of 'resistencia' from incompatible pointer type

int main(){
  TPaciente *g; // declarando um ponteiro do tipo TPaciente;
  int n;
  printf("Qual o numero de pacientes voce vai calcular a resistencia aerobica? \n");
  scanf("%d", &n);

  g = ((TPaciente*) malloc(n*sizeof(TPaciente)));
  lerDados(g,n);
  resistencia(g,n);

  int i;
  float CA;
  int fator;

  for(i=0; i<n; i++){
    fator = resistencia(g); //fator recebe o resultado da chamada de função resistencia
    CA = fator * g->idade;
    printf("\nO Condicionamento Aerobico do doente %s e %.0f", g->nome, CA);
  }

  free(g);
}


void lerDados(TPaciente *g, int n) {
  int i;
  for(i=0;i<n;i++){
    printf("\n Qual o nome do paciente: ");
    scanf("%s", &(g+i)->nome);
    printf("\n Qual a idade do paciente: ");
    scanf("%d", &(g+i)->idade);
    printf("\n Qual o nbcr do paciente: ");
    scanf("%f", &(g+i)->nbcr);
    printf("\n Qual o nbca do paciente: ");
    scanf("%f", &(g+i)->nbca);
  }
}

int resistencia(TPaciente *g, int n){
  int i, fator;
  float media;
  for(i=0; i<n ; i++){
    media = ((g+i)->nbcr*3 + (g+i)->nbca*5)/10;
    if(media <= 70){
      printf("FATOR = 3");
      fator = 3;
    }

    if((media > 70) && (media < 100)){
      printf("FATOR = 2");
      fator = 2;
    }

    if(media > 100){
      printf("FATOR = 1");
      fator = 1;
    }

    return fator;
  }
}

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por joaquim_bezzera
      Estou fazendo um trabalho para a faculdade criando uma estrutura de cadastro de uma corrida. Já consegui fazer grande parte mas não consigo resolver esses pontos. Alguém saberia resolver?

    • Por luannsr12
      Olá pessoal, parece que o meu Photoshop atualizou aqui, pois apareceu algumas ferramentas que eu não tinha visto, e também sumiu o ponteiro do seletor , alguém pode me ajudar
    • Por jadsonlucena
      #include <iostream> #include <cstdlib> using namespace std; struct Page { int a; Page* b; }; int main(int argc, char *argv[]) { int size = 5; Page* p = (Page*) malloc(sizeof(Page)); p->a = 5; p->b = (Page*) malloc(sizeof(Page) * size); for (int i = 0; i < size; i++) { p->b[i] = NULL; } cout << p->b[3] << endl; return 0; } A ideia era criar uma página onde dentro teríamos um array de páginas inicialmente nulas. Mas por algum motivo eu não estou conseguindo criar o array interno. Pois quando tento instanciar o valor nulo para as células do array, o compilador informa que não é um array e não pode acessar.
       
      Antes de qualquer coisa, realmente necessito que seja uma alocação dinâmica.
       
      Grato desde já pela ajuda... 
    • Por diegottt
      Galera bom dia , estou com uma duvida como acesso a chave dentro dessa estrutura, ao meu ver seria assim ex: (*raiz)->reg.chave = 3  , mais nao estou conseguindo acessar a variavel chave. 
       
      typedef int tipoChave;
       
      typedef struct tipoRegistro{
          tipoChave chave;
          //outros itens...
      }tipoRegistro;
       
      typedef struct tipoNo* tipoApontador;
       
      typedef struct tipoNo{
          tipoRegistro reg;
          tipoApontador esq,dir;
      }tipoNo;
       
    • Por Gabriel De Freitas
      Então galera, eu tô numa dúvida extrema com o código abaixo. Eu começei a estudar ponteiros em C faz alguns dias e eu acredito que seja a solução pro meu problema, mas não sei como tratar o código.
       
      O problema é o seguinte. Na função multiplicarMatrizes() eu não consigo acessar a matriz valoresC obviamente pq foi declarada dentro do main. Mas o problema é que eu não posso declara-la 'globalmente' fora do main devido ao fato de que eu preciso ler o numero de linhas/colunas de cada matriz no inicio do programa (não posso declara-las no código com um numero constante de linhas ou colunas).
       
      Código:
      #include<stdio.h> #include<stdlib.h> #define G 5 void lerMatrizes(int matrizX[][G], int matrizY[][G]); void multiplicaMatrizes(int A[][G], int B[][G]); int linhasA, colunasA, linhasB, colunasB; int main() { int i, j; printf("\nInforme a quantidade de linhas da matriz A : "); scanf("%d",&linhasA); printf("\nInforme a quantidade de colunas da matriz A : "); scanf("%d",&colunasA); printf("\nInforme a quantidade de linhas da matriz B : "); scanf("%d",&linhasB); printf("\nInforme a quantidade de colunas da matriz B : "); scanf("%d",&colunasB); int valoresA[linhasA][colunasA], valoresB[linhasB][colunasB], valoresC[colunasA][linhasB]; lerMatrizes(valoresA, valoresB); if (colunasA == linhasB) { multiplicaMatrizes(valoresA, valoresB); } else { printf("\n\nNão é possivel multiplicar matrizes neste formato. O numero de colunasA tem que ser igual linhasB"); } return 0; } void lerMatrizes(int matrizX[][G], int matrizY[][G]) { int i, j; // Gera Valores p Matriz1 for(i=0; i<linhasA; i++) { for(j=0; j<colunasA; j++) { matrizX[i][j] = i+1 * j+1; } } // Gera Valores p Matriz2 for(i=0; i<linhasB; i++) { for(j=0; j<colunasB; j++) { matrizY[i][j] = i+1 * j+1; } } } void multiplicaMatrizes(int A[][G], int B[][G]) { int i, j, k, temp=0; for(i=0; i<colunasA; i++) { for(j=0; j<linhasB; j++) { valoresC[i][j]=0; for(k=0; k<G; k++) temp += A[i][k] * B[k][j]; valoresC[i][j] = temp; temp=0; } } } Eu fiz o código usando um numero constante de linhas/colunas, aí qndo fui altera-lo travei nesta parte aí. Não consegui também passar a matriz por parâmetro, a solução seria um ponteiro?
       
      Agradeço desde já!
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.