Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Jinguitar

O que ta dando errado nesse codigo?

Recommended Posts

O programa é uma Lista simplesmente encadeada do qual possui as funcoes básicas de inclusao, exclusao consulta e alteracao, daí eu preciso tb de funcao que liste os funcionarios e os dados, a contagem deles, a média de seus salários e o maior dos salários, JÁ FIZ TUDO, só que quando é na hora de mostrar tudo relacionado a salario sai um numero maluco, e na hora de mostrar a quantidade de funcionarios também está assim...

Agradeço a quem tiver paciência de ler e mais ainda quem puder me ajudar!

um abraço!

#include <stdlib.h>
#include <string.h>
#include <iomanip.h>
// Tipo de cada elemento da LSE
struct LSE{
int m;
char n[200];
float s;
struct LSE *prox;
}*pra mim, *ult, *aux;

// Assinaturas das funções

void inclusao(int m, char s[100],float s);
void consulta(int m);
void alteracao(int m);
void exclusao(int m);
void ListarFunc();
int ContarFunc();
float MediaSalarios();
void FuncionarioMaiorSalario();



main()
{
int op=0, m,cont;
float s,med,mai;
char n[200];
pra mim=ult=NULL;
while(op!=9){
m=0;
cout<<"1-Inclusao\n";
cout<<"2-Consulta\n";
cout<<"3-Alteracao\n";
cout<<"4-Exclusao\n";
cout<<"5-Listar Funcionarios\n";
cout<<"6-Contagem de Funcionarios\n";
cout<<"7-Media de Salario\n";
cout<<"8-Maior Salario\n";
cin >> op;fflush(stdin);
if(op==1){
cout<<"Entre com a matricula:";
cin>>m;fflush(stdin);
cout<<"Entre com o nome:";
gets(n); fflush(stdin);
cout<<"Entre com o salario:";
cin>>s;fflush(stdin);
inclusao(m,n,s);
cout<<endl;
}
else if(op==2){
cout<<"Entre com o codigo para a colsulta:\n";
cin>>m; fflush(stdin);
consulta(m);
}
else if(op==3){
cout<<"Entre com o codigo para a Alteracao:\n";
cin>>m; fflush(stdin);
alteracao(m);
}
else if(op==4){
cout<<"Entre com o codigo para a exclusao:\n";
cin>>m; fflush(stdin);
exclusao(m);
}
else if(op==5){
fflush(stdin);
ListarFunc();

}
else if(op==6){
fflush(stdin);
ContarFunc();
cout<<"lista de funcionarios:"<<cont<<endl;
}
else if(op==7){
fflush(stdin);
MediaSalarios();
cout<<"Media de salarios:"<<med<<endl;
}
else if(op==8){
FuncionarioMaiorSalario();
cout<<"maior salario: "<<mai<<endl;
}

}
}

// Função de Inclusão

void inclusao(int m, char n[],float s)
{
aux = (struct LSE *) malloc(sizeof(struct LSE));
if(!pra mim)
pra mim=aux;
else
ult->prox=aux;
ult=aux;
ult->m=m;
strcpy(ult->n,n);
ult->prox=NULL;
cout<<"Inclusao realizada!\n";
}



// Função de Consulta
void consulta(int m)
{
int achei = 0;
aux=pra mim;
while(aux && !achei){
if(aux->m==m){
achei=1;
cout<<"Descricao:"<<aux->n<<"\n";
}
else aux=aux->prox;
}
if(!achei)
cout<<"Codigo inexistente!\n";
}

// Função de Alteração
void alteracao(int m)
{
int achei = 0;
aux=pra mim;
while(aux && !achei){
if(aux->m==m){
achei=1;
cout<<"Descricao atual:"<<aux->n<<"\n";
cout<<"Entre com a nova descricao:";
gets(aux->n);
cout<<"Alteracao realizada!\n";
}
else aux=aux->prox;
}
if(!achei)
cout<<"Codigo inexistente!\n";
}
// Função de Exclusão
void exclusao(int m)
{
int achei = 0;
aux=pra mim;
struct LSE *aux2;
while(aux && !achei){
if(aux->m==m){
if(aux==pra mim){
if(aux==ult)
pra mim=ult=NULL; //CASO 1
else pra mim=pra mim->prox; //CASO 2
}
else if(aux==ult){ //CASO 3
ult=aux2;
ult->prox=NULL;
}
else
aux2->prox = aux->prox; //CASO 4
achei=1;
free(aux);
cout<<"Exclusao realizada!\n";
}
else {
aux2=aux;
aux=aux->prox;
}
}
if(!achei)
cout<<"Codigo inexistente!\n";
}
//Função Listar funcionarios

void ListarFunc()
{
aux = pra mim;
while(aux) // o mesmo que while(aux!=NULL)
{
cout << "Matricula: "<< aux->m << "\n";
cout << "Nome: "<< aux->n << "\n";
cout << "Salario: "<< aux->s<<fixed << "\n"<<endl;
aux = aux->prox;
}
}

//Função Contagem de funcionarios

int ContarFunc()
{
int m=0;
aux = pra mim;
while(aux) // o mesmo que while(aux!=NULL)
{
m++;
aux = aux->prox;
}
return(m);
}

//Função Média de salarios

float MediaSalarios()
{
int m=0;
float s=0;
aux = pra mim;
while(aux) // o mesmo que while(aux!=NULL)
{
m++;
s+=aux->s;
aux = aux->prox;
}
if(m>0)
return(s/m);
else
return(-1);
}

//funcao Maior salario

void FuncionarioMaiorSalario()
{
int primeiro=1;
float maior;
char n[200];
aux = pra mim;
while(aux) // o mesmo que while(aux!=NULL)
{
if(primeiro) // o mesmo que if(primeiro==1)
{
maior=aux->s;
strcpy(n, aux->n);
primeiro =0;
}
else if(aux->s>maior)
{
maior=aux->s;
strcpy(n, aux->n);
}
aux = aux->prox;
}
cout << "Funcionario de maior salário:"<<n;
}

Editado por gandalfnho
Mensagem toda em negrito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você declarou med e mai:

float s,med,mai;

Mais em nenhum momento atribui valores pra eles, está simplesmente imprimindo essas variaveis.

As funções deviam retornar valores, e você receber esses valores na 'med' e 'mai'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente como o WhiteDog disse, você não atribuiu valores as variáveis. Então você acaba as imprimindo "sujas" por valores alocados naquele espaço de memória destinado a variável.

Diferente do java, o c++ não limpa automaticamente as variáveis declaradas. Então por isso acaba saindo esses valores "malucos".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×