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
Pergunta
jinguitar
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
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.