Ir para conteúdo
Fórum Script Brasil
  • 0

O que ta dando errado nesse codigo?


jinguitar

Pergunta

O programa é uma Lista simplesmente encadeada do qual possui as funções 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!

Obs. eu postei essa mesma pergunta em outro forum, não sei se isso gera problemas, caso aconteça peço que delete imediatamente o meu tópico

#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=prim->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;

}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Só ta faltando alguns pequenos detalhes no seu programa:

Na funcao inclusao() falta a linha

ult->s=s;

Na opçao 6 você chama ContarFunc() que devolver a quantidade de registros mas você não salva em lugar nenhum quando o correto é:

cont=ContarFunc();

Link para o comentário
Compartilhar em outros sites

  • 0
Só ta faltando alguns pequenos detalhes no seu programa:

Na funcao inclusao() falta a linha

ult->s=s;

Na opçao 6 você chama ContarFunc() que devolver a quantidade de registros mas você não salva em lugar nenhum quando o correto é:

cont=ContarFunc();

Muito Obrigado cara, agora está tudo funcionando! Obrigado mesmo!!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...