Jump to content
Fórum Script Brasil
  • 0

O que ta dando errado nesse codigo?


jinguitar

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...