Ir para conteúdo

Arquivado

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

mariana.duarte

[Resolvido] Problema com Struct

Recommended Posts

Gente, eu tô fazendo esse programa, mas estão com uns errinhos que não consigo descobrir... Não consegui aprender muito bem struct, mas tô tentando... O problema é que ele pede, primeiro, que o programa diga qual empregado é o mais bem pago, e depois qual a empregada mais bem vaga, só que ele mostra o salário da pessoa mais bem paga, tanto faz ser homem ou mulher, e a matrícula sempre dá igual a 92 Oo', então, se alguém puder me ajudar a resolver isso. =/

Agradeço desde já!

 

CODE
#include<stdio.h>

#include<conio.h>

 

 

struct funcionario{

int matricula;

char sexo;

float salario;

int temp_trabalho;

};

 

main()

{

struct funcionario y[3];

int i;

float soma,media,salario_maior,matricula_maior;

 

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

{

printf("\nDigite sua matrícula:");

scanf("\n%d",&y.matricula);

printf("\nDigite seu sexo (0: feminino ou 1: masculino):");

scanf("\n%c",&y.sexo);

printf("\nDigite seu salario:");

scanf("\n%f",&y.salario);

printf("\nDigite o tempo de trabalho em meses (de 1 a 12):");

scanf("\n%d",&y.temp_trabalho);

}

 

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

{

soma=y.salario+soma;

}

media=soma/3;

printf("\nA media eh:%.2f",media);

 

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

{

if((y.sexo=='1')&&(y.salario>salario_maior));

salario_maior=y.salario;

 

if((y.sexo=='0')&&(y.salario>salario_maior));

salario_maior=y.salario;

 

}

printf("\nA matricula e o salario do funcionario mais bem pago é=%s,%f",y.matricula,salario_maior);

printf("\nA matricula e o salario da funcionario mais bem pago é=%s,%f",y.matricula,salario_maior);

getche();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você naum definiw qual o valor inicial de salario_maior!

e preste atenção no seu if

if((y[i].sexo=='1')&&(y[i].salario>salario_maior));
você fecha ele com ';' sem ao menos ter usado!

observe tbm no final você fala pra exibir a matricula.. você definiw ela como inteira e no printf qr q exiba como string!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembre-se de inicializar as variáveis, isso é um erro comum.

O C não inicializa as variáveis podendo essas conter sujeira.

 

soma = 0.0;
for(i=0;i<3;i++)		  {		   
   soma=y[i].salario+soma;		  
}			 
media=soma/3.0;		   
printf("\nA media eh:%.2f",media);

 

O mesmo erro acontece quando verifica qual o maior salário com um agravante.

Para informações distintas necessita-se de variáveis distintas.

 

Use duas variáveis para achar o maior salario.

Uma que recebe o maior entre os homens e uma que recebe o maior entre as mulheres.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

observando seu algoritmo agora de manha(otima hr do dia para pensar ^^)!!

eu verifiquei q depois dos 'ifs' você fala pra exibir com o indice i, sendo q ele ira valer 3 pq saiw do 'for' com esse valor, para isso altere nesse trecho: usando uma variavel auxiliar!

for(i=0;i<3;i++){
		 if((y[i].sexo=='1')&&(y[i].salario>salario_maior)){salario_maior=y[i].salario;aux=i;}
		 else if((y[i].sexo=='0')&&(y[i].salario>salario_maior)){salario_maior=y[i].salario;aux=i;}}
printf("\nA matricula e o salario do funcionario mais bem pago e=%d,%.2f",y[aux].matricula,salario_maior);
printf("\nA matricula e o salario da funcionario mais bem pago e=%d,%.2f",y[aux].matricula,salario_maior);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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