Ir ao conteúdo
  • Cadastre-se

Ajuda com estrutura


amandalee

Posts recomendados

olá,estou começando a estudar estrutura ,ponteiros e função e me deparei com uma questão básica:

aí vai:

"Imagine que tenha sido realizada uma pesquisa com 20 pessoas a respeito de salário, idade, número

de filhos e sexo. faça um programa que receba os dados coletados na pesquisa e forneça a média salarial, a

média das idades e o número de pessoas cujo salário é maior que R$ 500,00.":

fiz da segutinte forma:

#include<stdio.h>

#include<stdlib.h>

typedef struct

{int salario,idade,filho;

char sexo;

}pesquisa;

void ler(pesquisa x[]) //função para ler os dados

{

int i;

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

{ printf("entre com o salario");

scanf("%d",&x.salario);

printf("entre com a idade");

scanf("%d",&x.idade);

printf("entre com a qtd.de filhos");

scanf("%d",&x.filho);

printf("entre com o sexo");

scanf("%c",&x.sexo);

}

}

void soma(pesquisa y[],float*media1,float*media,int*cont) //função p/fz as somas e devolver a media//

{ int i,soma=0,soma2=0;

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

{

soma=soma+y.salario;

*media=soma/3;//a media do salario

if(y.salario>500)

{*cont++;}//quant. de salario maior que 500

soma2=soma2+y.idade;

*media1=soma2/3; //a media das idades

}

}

main()

{

float media,media1;

int cont=0;

pesquisa x[3];

ler(x);

soma(x,&media,&media1,&cont);

printf(" a media salario %d ,a media das idades %d,salarioo maior que 500 %d",media,media1,cont);

system("pause");

}

o programa não faz nada,alguem poderia me ajudar a identificar os erros,desde já agradeço!!

Link para o comentário
Compartilhar em outros sites

testei o seu código. Eis o que encontrei de erros:

1) A função "soma()" está com parâmetros trocados. Inverta "media" e "media1".

2) Na mesma função soma, você poderá retornar o 'cont' como retorno de função, ao invés de ser um ponteiro.

3) Na função "ler()", precisei colocar um "fflush(stdin)" antes de fazer a leitura do char (&x.sexo), caso contrário, irá lixo pra memória impedindo que seja lido o 'sexo'.

Acho que era só isso.

Segue código abaixo. Foram pouquíssimas coisas que eu mexi:


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

typedef struct
{
char sexo;
int salario;
int idade;
int filho;
} pesquisa;

void
ler( pesquisa x[] ) //função para ler os dados
{

int i;

for ( i = 0; i < 3; i++ )
{
printf("entre com o salario: ");
scanf("%d", &x[i].salario);

printf("entre com a idade: ");
scanf("%d", &x[i].idade);

printf("entre com a qtd.de filhos: ");
scanf("%d", &x[i].filho);

fflush(stdin);
printf("entre com o sexo: ");
scanf("%c", &x[i].sexo);
}

}

int
soma( pesquisa y[], float* media, float* media1, int cont ) //função p/fz as somas e devolver a media//
{

int i, soma=0, soma2=0;

for ( i = 0; i < 3; i++ )
{
soma = soma + y[i].salario;
*media = soma / 3; //a media do salario

if ( y[i].salario > 500 )
{
cont++;
} //quant. de salario maior que 500

soma2 = soma2 + y[i].idade;
*media1 = (float) soma2 / 3; //a media das idades
}

return cont;

}

int
main( void )
{

float media, media1;
int cont = 0;
pesquisa x[3];

ler( x );

cont = soma( x, &media, &media1, cont );

printf("a media dos salario: %.2f\na media das idades: %.2f\nsalario maior que 500: %d\n", media, media1, cont);

return 0;

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!