0
Hello, the output that shows the value of the variable half appears to be an address instead of the value float, I cannot identify the error, someone can explain me?
#include <stdio.h>
#include <stdlib.h>
struct calculos
{
int numero;
int quadrado;
float metade;
};
struct calculos * subrotina(int n) //calculos = tipo de retorno
{
struct calculos * dados = (struct calculos*)malloc(sizeof(struct calculos)); //ALOCAÇÃO DINÂMICA //QUESTÃO 3
dados -> numero = n; //QUESTÃO 3
dados -> quadrado = n*n; // "->" significa recebe //QUESTÃO 3
dados->metade = n/2.0;
return dados;
};
int main(void)
{
int numero;
int contDados = 0;
int tamanho = 5;
struct calculos * retorno; //QUESTÃO 3
struct calculos * vetorCalculos = (struct calculos*)malloc(sizeof(struct calculos)*(contDados+tamanho));
struct calculos * vetorCalculosTemp;
do{
printf("Informe um valor: ");
scanf("%d", &numero);
if(numero>0)
{
contDados++;
if(contDados%tamanho == 0)
{
//QUESTÃO 4
vetorCalculosTemp = (struct calculos*)malloc(sizeof(struct calculos)*(contDados+tamanho));
printf("ALOCOU!\n");
for(int contTemp=0; contTemp<=contDados; contTemp++)
{
vetorCalculosTemp[contTemp].numero = vetorCalculos[contTemp].numero;
vetorCalculosTemp[contTemp].quadrado = vetorCalculos[contTemp].quadrado;
vetorCalculosTemp[contTemp].metade = vetorCalculos[contTemp].metade;
}
free(vetorCalculos);
vetorCalculos = vetorCalculosTemp;
}
retorno = subrotina(numero); //QUESTÃO 3
vetorCalculos[contDados-1].numero = retorno->numero;
vetorCalculos[contDados-1].quadrado = retorno->quadrado;
vetorCalculos[contDados-1].metade = retorno->metade;
}
}while(numero > 0);
printf("\nMostrando calculos:\n");
printf("\nDobro:\n");
for(int pos = 0; pos <= contDados; pos++)
{
printf("%d ", vetorCalculos[pos].numero);
printf("%d \n", vetorCalculos[pos].quadrado);
}
printf("\nMetade:\n");
for(int pos = 0; pos <= contDados; pos++)
{
printf("%d ", vetorCalculos[pos].numero);
printf("%d \n", vetorCalculos[pos].metade);
}
return 0;
}
If
metade
is afloat
then you should use%f
in functionprintf
.– anonimo