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. 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->salario; cont++; lista = lista->proximo; } printf("A media do salario eh: %f\n", media = somasalario/cont); }void menor_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;
}
} int main() { //No de referencia - Inicio da Lista Funcionario * lista = NULL; //Cria elementos para inserir na listaint menu = 1; char nome[20]; int codigo = 0; float salario = 0; do{ monta_menu(); scanf("%d", &menu); switch(menu){ case 1: printf("Nome: \n"); scanf("%s", &nome); printf("Codigo: \n"); scanf("%d", &codigo); printf("Salario: \n"); scanf("%f", &salario); break; case 2: printf("Digite o codigo do funcionario que deseja excluir: \n"); scanf("%d", &codigo); break; case 3: apresenta_lista(lista); break; } } while (menu != 0);system ("pause"); } |
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. |
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: Antes de escrever na linguagem definitiva escreva primeiro em "Português estruturado": 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. |
É 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 |
Siga esta pergunta
Por Email:Uma vez que você entrar você poderá se inscrever para todas as atualizações aqui
Por RSS:Markdown Básico
- *italico* ou __italico__
- **negrito** or __negrito__
- link:[texto](http://url.com/ "Qual é a sua dúvida?")
- imagem?
- 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
pergunta feita: Apr 21 '14 às 22:32
pergunta lida: 2,065 vezes
última alteração: Dec 05 '15 às 17:19
Desista do curso mané!