Quick actions

cmd+k|ctrl+k

Navigation

Languages

baralho

Snippet info

Language

C

Visibility

public

Author

rodrigogons

Created

2017-05-18T00:13:05Z

Updated

2017-05-18T01:12:35Z

/*
    Em um determinado jogo de cartas, cada jogador deve retirar 5 cartas do monte e
    segurá-las em suas mãos. Contudo, a ordem de descarte deve ser a mesma ordem em
    que as cartas foram retiradas do monte.
    Considerando a imagem exemplificativa acima, implemente um algoritmo, utilizando
    estruturas de dados dinâmicas, capaz de representar a situação exposta: as cartas,
    inicialmente presentes no monte, devem ser armazenadas nas mãos do usuário e, em
    seguida, descartadas (seguindo as regras anteriormente mencionadas).
*/

/*
    grupo: Allan Cherre, Luis Henrique, Rodrigo Gonçalves
*/

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

// estrutura do baralho
typedef struct stru
{
    int carta;
    struct stru *prox;
} baralho;

// ponteiros
baralho *p, *q=NULL, *top=NULL;

// coloca informações na pilha
void push(int val)
{
    p = (baralho *) malloc(sizeof(baralho));
    p->carta = val;
    p->prox = top;
    top = p;
    q = p;
}

// remove valores da pilha, envia para um vetor e liberar esse valor
int popn()
{
    p = top;
    top = p->prox;
    int val = p->carta;
    free(p);
    return val;
}


void main()
{
    int n, tam=4;

    // recebe valores
    for(int i=0; i<5; i++)
    {
        scanf("%d", &n);
        printf("carta retirada %d\n", n);
        push(n);
    }
    
    
    printf("\n");
    
    int lista[tam], i=0;

    // monta um vetor 
    for(;i<=tam;i++) lista[i] = popn();

    // imprime valores
    for(i=tam; i>=0; i--) printf("%d descartado\n", lista[i]);

	printf("cartas descartadas\n");
	// libera os ponteiros
    free(top);
}
INFO