Meu codigo em C nao esta rodando
Boa noite, estou tentando rodar o meu codigo porem estou tendo problemas, poderiam me ajudar?
#include <stdio.h>
struct peso{
int nome[30];
float peso;
}
int main(void)
{
struct peso dados[5];
float media=0;
int i=1, cant=0;
for(i=0;i<5;i++)
{
printf("\nNome: ");
gets(dados[i] .nome);
printf("\nPeso: ");
printf("%f",&dados[i] .peso);
media+=dados[i] .peso;
}
media=media/5;
for(i=0;i<5;i++)
{
if(dados[i].peso>media)
{
printf("%s está acima do peso médio\n",dados[i].nome);
cant++;
}
}
printf("%d pessoas estão acima do peso médio", cant);
}Fabiano
Curtidas 1
Respostas
Lucas Santato
19/04/2023
Nunca mexi com C, mas colei seu código em um compilador online e ele acusou erro de estar faltando um ";" no seu struct peso, ficaria assim:
struct peso{
int nome[30];
float peso;
}; //Esse ";" estava faltando.
GOSTEI 0
Arthur Heinrich
19/04/2023
Também não manjo muito de C, mas a palavra "struct" me parece ser utilizada para criar um agrupamento de características, como em:
struct peso{
int nome[30];
float peso;
}
Porém, você utilizou em um caso em que só tem uma característica e não está entre chaves:
struct peso dados[5];
Não deveria ser somente:
peso dados[5];
Aí, para mim, parece que você está criando um array de 5 posições, em que cada elemento é uma estrutura "peso".
Além disso, quando você pede o nome, você utiliza:
printf("\\\\nNome: ");
gets(dados[i] .nome);
Que exibe o texto "Nome:" na tela e supostamente aguarda a digitação do nome, que será armazenado na variável "nome", da posição "i" do array "dados".
Quando ao valor de peso, qual é o comando que recebe a digitação do usuário? Aparentemente está faltando isso.
Se o gets() retorna um string imputado pelo usuário, imagino que deveria haver um getf() para imputar um float, ou algo parecido:
printf("\\\\nPeso: ");
getf(dados[i] .peso);
Será que é isso?
Obs.: não sei se existe a função getf()
struct peso{
int nome[30];
float peso;
}
Porém, você utilizou em um caso em que só tem uma característica e não está entre chaves:
struct peso dados[5];
Não deveria ser somente:
peso dados[5];
Aí, para mim, parece que você está criando um array de 5 posições, em que cada elemento é uma estrutura "peso".
Além disso, quando você pede o nome, você utiliza:
printf("\\\\nNome: ");
gets(dados[i] .nome);
Que exibe o texto "Nome:" na tela e supostamente aguarda a digitação do nome, que será armazenado na variável "nome", da posição "i" do array "dados".
Quando ao valor de peso, qual é o comando que recebe a digitação do usuário? Aparentemente está faltando isso.
Se o gets() retorna um string imputado pelo usuário, imagino que deveria haver um getf() para imputar um float, ou algo parecido:
printf("\\\\nPeso: ");
getf(dados[i] .peso);
Será que é isso?
Obs.: não sei se existe a função getf()
GOSTEI 0