Pessoal, faço redes, e estou em uma das cadeiras mais difíceis, estrutura de dados, não entendo quase nada, e preciso de auxílio em um trabalho, alguém manja?

Código:

typedef struct Funcionario { int codigo; //código do funcionário char nome[35]; // nome do funcionário float salario; // salário do funcionário struct Funcionario *proximo; // ponteiro que indica o próximo da lista } Funcionario;

Funcionario * cria_elemento(char nome[20], int codigo, float salario){ Funcionario * novo; novo = (Funcionario *) malloc(sizeof(Funcionario)); strcpy(novo->nome,nome); // Para imprimir nomes sempre eh necessario esse comando (strcpy(novo->nome,nome); novo->codigo = codigo; novo->salario = salario; novo->proximo = NULL; return novo; }

//Funcao para inserir um elemento na primeira posicao da lista Funcionario * insere_primeiro(Funcionario * lista, Funcionario * novo){ novo->proximo = lista; return novo;

}

//Insere o novo elemento na ultima posicao da lista Funcionario * insere_ultimo(Funcionario * lista, Funcionario * novo){ if (lista != NULL) { Funcionario * aux = lista; while (aux->proximo != NULL){ aux = aux->proximo; } aux->proximo = novo; return lista; }else{ return novo; } }

Funcionario * remove_elemento(Funcionario * lista, int posicao){ //Remove elemento da lista

Funcionario * aux = lista; Funcionario * remove = NULL; int cont = 1;

if (lista == NULL){ //se lista está vazia return NULL; }

while(aux->proximo!= NULL && cont < (posicao-1)){ aux = aux->proximo; cont++; }

// se eh a segunda posicao entao so deve atualizar o cont if (posicao == 2) { cont++; }

if (cont == 1){ if (aux->proximo != NULL) lista = aux->proximo; // atualiza o inicio.
else lista = NULL; // caso só exista na lista o proprio a ser removido free(aux); } else {
remove = aux->proximo; aux->proximo = remove->proximo; free(remove); } return lista; }

void apresenta_lista(Funcionario * lista){ //Percorrendo os elementos da lista int cont = 0; if (lista != NULL){ printf("n"); while (lista != NULL){ printf("%s,%d,%dn", lista->nome,lista->codigo,lista->salario); printf("n"); lista = lista->proximo; } printf("n"); printf("n"); } }

void calc_media_salario (Funcionario * lista){ // Foi feito um VOID para calcular a Media do salario float somasalario = 0; int cont = 0; float media = 0;

while(lista != NULL){ somasalario = somasalario+lista-&gt;salario; cont++; lista = lista-&gt;proximo; } printf("A media do salario eh: %f\n", media = somasalario/cont); }

void menor_salario (Funcionario * lista){ printf("Implementar");

}
void maior_salario (Funcionario * lista){ printf("Implementar"); }

Funcionario * inserir_elemento_na_posicao(Funcionario * lista, Funcionario * novo, int posicao){

Funcionario * aux = lista; int cont = 1;

if (lista == NULL){ return novo; }

while(aux->proximo!= NULL && cont < (posicao-1)){ aux = aux->proximo; cont++; }

novo->proximo = aux->proximo; aux->proximo = novo;

if (posicao == 1){ return novo; }else{ return lista; } }
void monta_menu(){ system("cls"); printf("Bem Vindo ao Menu n"); printf("Selecione a opçao desejada n"); printf(" 1 - Adicionar Funcionario n"); printf(" 2 - Excluir Funcionario n"); printf(" 3 - Mostrar Lista n"); printf(" 0 - Sair n"); }

int main() {

//No de referencia - Inicio da Lista Funcionario * lista = NULL;

//Cria elementos para inserir na lista

int menu = 1; char nome[20]; int codigo = 0; float salario = 0;

do{ monta_menu(); scanf("%d", &amp;menu); switch(menu){ case 1: printf("Nome: \n"); scanf("%s", &amp;nome); printf("Codigo: \n"); scanf("%d", &amp;codigo); printf("Salario: \n"); scanf("%f", &amp;salario); break; case 2: printf("Digite o codigo do funcionario que deseja excluir: \n"); scanf("%d", &amp;codigo); break; case 3: apresenta_lista(lista); break; } } while (menu != 0);

system ("pause"); }

perguntou Apr 21 '14 às 22:32

dglsmello_ferreira's gravatar image

dglsmello_ferreira
5585

fechado Dec 05 '15 às 17:19

marcmira's gravatar image

marcmira ♦
36356330.0k

Desista do curso mané!

callazzans's gravatar image callazzans ♦ (Apr 21 '14 às 22:47)

A pergunta foi fechada pelo seguinte motivo: "Pergunta já respondida e resposta aceita" marcmira Dec 05 '15 às 17:19

Preste atenção nas aulas e estude, isso aqui é um fórum e não um site para fraudar trabalhos.

link permanente

respondeu Apr 21 '14 às 22:44

callazzans's gravatar image

callazzans ♦
451210.7k

Obrigado pelas dicas pessoal.

link permanente

respondeu Apr 22 '14 às 00:21

dglsmello_ferreira's gravatar image

dglsmello_ferreira
5585

Esses algorítimos são básicos e já estão embutidos nas linguagens e bancos de dados, mas é bom aprender para desenvolver a lógica de programação.

Para entender melhor a logica, faça diagramas de Chapin de cada função:
alt text

Antes de escrever na linguagem definitiva escreva primeiro em "Português estruturado":
alt text

Cara, este código está péssimo, não usa as técnicas mais básicas de programação estruturada, qualquer professor reprovaria esse aluno.

link permanente

respondeu Apr 23 '14 às 02:22

Deepouter's gravatar image

Deepouter
19192611.1k

Não estou fraudando trabalho, só estou pedindo uma luz, uma ajuda. Mesmo assim, muito obrigado!

link permanente

respondeu Apr 21 '14 às 22:49

dglsmello_ferreira's gravatar image

dglsmello_ferreira
5585

1

Não meu amigo, sem te desmerecer, sem querer te sacanear e sem te julgar. Você ta mau na faculdade, pega muito mau para você pedir ajuda num fórum do tamanho desses. Até um professor seu pode ser um usuário ativo por aqui. Você praticamente pediu a resposta aqui. Como eu disse, procure prestar atenção nas aulas e estudar para não passar por isso. Como já está na marca do gol, procure seus colgas que são os tals "CDF's" e tente se encontrar na matéria, pois ela será muito importante na sua trajetória.

callazzans's gravatar image callazzans ♦ (Apr 21 '14 às 23:00)
1

Entendo. Já fiz a maior parte do código. Faltam poucas coisas, só pedi auxílio, mas entendi teu ponto de vista.

dglsmello_ferreira's gravatar image dglsmello_ferreira (Apr 22 '14 às 00:29)

É natural que dificuldades surgem, mas voce não quer orientação pura, apenas deu copypaste no seu exercício.

e isso não é legal.

reveja sua estratégia e boa sorte

link permanente

respondeu Apr 21 '14 às 23:37

marcmira's gravatar image

marcmira ♦
36356330.0k

Siga esta pergunta

Por Email:

Uma vez que você entrar você poderá se inscrever para todas as atualizações aqui

Por RSS:

Respostas

Respostas e Comentários

Markdown Básico

  • *italico* ou __italico__
  • **negrito** or __negrito__
  • link:[texto](http://url.com/ "Qual é a sua dúvida?")
  • imagem?![alt texto](/path/img.jpg "Qual é a sua dúvida?")
  • lista numerada: 1. Foo 2. Bar
  • para adicionar uma quebra de linha basta adicionar dois espaços onde você gostaria que a nova linha estivesse.
  • tags HTML básicas também são suportadas

Tags

×120
×106
×2

pergunta feita: Apr 21 '14 às 22:32

pergunta lida: 2,065 vezes

última alteração: Dec 05 '15 às 17:19