Ir ao conteúdo
  • Cadastre-se

C Desafio Programação C (Lista Encadeada)


TRMM

Posts recomendados

#include <stdio.h>
#include <stdlib.h>


typedef struct no celula;

struct no
{
    int info;
    struct no *prox;
};


void imprimir(celula *lista)
{
    celula *p;

    for(p=lista; p!=NULL; p = p->prox)
        printf(" %d ", p->info);
}

/*************  FUNÇÃO BUSCA *********/
celula *busca(celula *lista, int x)
{
    celula *p;
    p = lista;

    while(p != NULL && p->info != x)
        p = p->prox;

    return p;
}


/*********** INSERIR ************/
void inserir(celula **L, int x)
{
    celula *novo;
    if(busca(*L, x) == NULL)
    {
        novo = (celula *)malloc(sizeof(celula));
        if(novo != NULL)
        {
            novo->info = x;
            novo->prox = *L;
            *L = novo;
        }
        else
            printf("Não há memória disponível!!!\n\n");
    }
    else
        printf("Valor já se encontra na lista!!\n\n");
}

/******** BUSCA REMOVE **************/
void buscaRemove(celula *L, celula **apt, celula **ant, int x)
{
    *ant = NULL;
    *apt = L;

    while(*apt != NULL && (*apt)->info != x)
    {
        *ant = *apt;
        *apt = (*apt)->prox;
    }
}

/************ REMOÇÃO **************/
void removeLista(celula **L, int x)
{
    celula *apt, *ant;
    buscaRemove(*L, &apt, &ant, x);
    if(apt != NULL)
    {
        if(ant != NULL)
            ant->prox = apt->prox;
        else
            *L = apt->prox;

        free(apt);
    }
    else
        printf("Valor não encontrado!!!\n\n");
}

/****** FUNÇÃO MENU  ***************/
int menu()
{
    int opcao;          
    
    printf("Munu de Opções: \n");
    
    printf("[1] Cadastrar Funcionario\n");
    printf("[2] Cadastrar Produto\n");
    printf("[3] Verificar Funcionario ou Produto\n");
    printf("[4] Remover Funcionario ou Produto\n");
    printf("[5] Imprimir Funcionario ou Produto\n");
    printf("[6] Vendas\n");
    printf("[7] Gerar Relatorios\n");
    printf("[0] Sair\n");

    printf("Informe a Opcao do Menu Desejada: ");
    scanf("%d", &opcao);

    return opcao;
}


/************* FUNÇÃO PRINCIPAL **********/
int main()
{
    int op, x;
    celula *lista;
    lista = NULL;

    op = menu();
    while(op != 0)
    {
        switch (op)
        {
            case 1:                
                    printf("Informe o Codigo do Funcionario:  ");
                    scanf("%d", &x);
                    inserir(&lista, x);
                    break;

            case 2:
                    printf("Informe o Codigo do Produto: ");
                    scanf("%d", &x);
                    if(busca(lista, x) == NULL)
                        printf("Valor não encontrado!!!\n\n");                
                    else
                        printf("O valor %d já esta na lista!!\n\n", x);
                    break;

            case 3:
                imprimir(lista);
                break;

            case 4:
                    printf("Informe o valor a ser removido: ");
                    scanf("%d", &x);
                    removeLista(&lista, x);
                    break;
        
            case 5:
            //fazer
                break;

            case 6:
            //fazer
                break;

            case 7:
            //fazer
                break;

            
            default:
                printf("Opcao invalida!!!\n\n");


        }
        op = menu();
    }


    return 0;
}

Boa noite! Alguém pra ajudar?

Iniciei mas falta muita coisa. 

 

Segue o que é pedido abaixo:

 

 

 

Implementação código em C.

 

 

MENU

1 - Cadastrar Funcionário

2 – Cadastrar Produto

3 - Verificar Funcionários/Produtos

4 – Remover Funcionários/Produtos

5 – Imprimir Funcionários/Produtos

6 – Vendas

7 – Gerar Relatórios

0 - Sair

 

Informe a opção do menu desejada:__

 

 

Para cada opção do MENU temos a seguinte descrição

 

1 - Cadastrar Funcionário: Esta opção deve ser capaz de cadastrar um número ÚNICO valor inteiro (int) que representa o código do funcionário, um número real (float) que representa o saldo inicial dos valores de vendas realizada pelo funcionário e também a inteiro que representa a quantidade de vendas realizada pelo funcionário.

 

2 - Cadastrar Produto: Esta opção deve ser capaz de cadastrar um número ÚNICO inteiro que representa o código do produto, outro valor inteiro que representa a quantidade disponível do produto, ou seja, quantidade em estoque e por fim um valor real que corresponde ao valor unitário do produto.

 

3 - Verificar Funcionários/Produtos: Esta opção deve ser capaz de verificar se um funcionário ou se um produto já esta cadastrado. Aqui uma mensagem deve ser perguntada para saber se a verificação será sobre os funcionários ou sobre os produtos. Faça a verificação pelo código.

 

4 – Remover Funcionários/Produtos: Esta opção deve ser capaz de remover um funcionário ou um produto. Aqui uma mensagem deve ser perguntada para saber se a remoção será sobre os funcionários ou sobre os produtos. Faça a remoção pelo código.

 

5 – Imprimir Funcionários/Produtos: Esta opção deve ser capaz de imprimir (mostrar na tela) todos os funcionários ou todos os produtos. Aqui uma mensagem deve ser perguntada para saber se a impressão será sobre os funcionários ou sobre os produtos.

 

 

6 – Vendas: Esta opção deve ser capaz de realizar uma venda. Aqui deve ser informado o código do funcionário que ira realizar a venda, caso o funcionário não esteja cadastrado a venda deve ser interrompida e finalizada. O segundo passo é informar o código do produto e a quantidade que será vendido. Caso o produtor não esteja cadastrado ou a quantidade do produto a ser vendido seja maior que existe no estoque então a venda não devera ser completada. Caso a venda seja concluída, o produto devera ser atualizado no estoque e o valor e quantidade da venda também deve ser atualizado para o funcionário.

 

 

7 – Gerar Relatórios: Esta opção deve ser capaz de gerar relatórios. Aqui um novo menu deve ser apresentado da seguinte forma:

 

 

 

MENU DE RELATÓRIOS:

 

1 - Mostrar ordenado (crescente) os funcionários pelo código

 

2 - Mostrar ordenado (crescente) os produtos pelo código

 

3 - Mostrar os cinco funcionário que mais vende

 

4 - Mostrar os cinco funcionários que menos vende

 

5 - Mostrar ordenado (decrescente) os produtos no estoque

 

6 - Mostrar ordenado (decrescente) os produtos pelo valor

 

7 – Mostrar ordenado (decrescente) os funcionários pelo valor

 

0 – Sair (Voltar ao Menu Principal)

 

Para as opções do menu de impressão temos:

 

 

1 - Mostrar ordenado (crescente) os funcionários pelo código: Mostrar todos os funcionários de forma ordenada crescentemente pelo código. Você pode utilizar um dos três algoritmos de ordenação visto em sala, bubble-sort, insertionsort ou quick-sort

 

2 - Mostrar ordenado (crescente) os produtos pelo código: Mostrar todos os produtos de forma ordenada crescentemente pelo código. Você pode utilizar um dos três algoritmos de ordenação visto em sala, bubble-sort, insertion-sort ou quicksort.

 

3 - Mostrar cincos funcionário que mais vende: Mostrar os cincos funcionários que tem a MAIOR quantidade de vendas.

 

4 - Mostrar os cincos funcionários que menos vende: Mostrar os cincos funcionários que tem a MENOR quantidade de vendas.

 

5 - Mostrar ordenado (decrescente) os produtos no estoque: Mostrar em ordem decrescente os produtos pela sua quantidade disponível em estoque.

 

6 - Mostrar ordenado (decrescente) os produtos pelo valor: Mostrar em ordem decrescente os produtos pelo seu valor unitário.

 

7 – Mostrar ordenado (decrescente) os funcionários pelo valor: Mostrar todos os funcionários em ordem decrescente pelo valor total de vendas realizadas.

 

0 – Sair (Voltar ao Menu Principal): Sair do menu de relatórios e retornar com menu principal.

 

0 – Sair (Limpar tudo - Finalizar o programa): Esta opção deve finalizar o programa. Aqui suas listas, funcionários e produtos, devem ser limpos na memória.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...