Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- //cria fila onde sera feito o monte das cartas
- struct Fila{
- int ini;
- int fim;
- int dados[51];
- int nItens;
- };
- void Criafila(struct Fila *F){
- F->ini=0;
- F->fim=0;
- F->nItens=0;
- }
- int FilaVazia(struct Fila *F)
- {
- if(F->nItens==0)
- return 1;
- else
- return 0;
- }
- int FilaCheia(struct Fila *F)
- {
- if(F->nItens==51)
- return 1;
- else
- return 0;
- }
- void QUEUE(int VLR,struct Fila *F){
- F->dados[F->fim]=VLR;
- F->fim=(F->fim+1)%51;
- F->nItens++;
- }
- int DEQUEUE(struct Fila *F, bool pr){
- int sai,aux;
- if(pr){
- printf("Discarded cards: ");
- }
- sai=F->dados[F->ini];
- F->ini=(F->ini+1)%51;
- F->nItens--;
- //essa parte diferencial
- aux=F->dados[F->ini];
- QUEUE(aux, F);
- F->ini=(F->ini+1)%51;
- F->nItens--;
- return sai;
- }
- int main(int argc, char** argv){
- int n;
- struct Fila Fila;
- while(n!=0)
- {
- scanf("%d", &n); //será a sequencia de numeros
- Criafila(&Fila);
- for(int i=1; i<=n;i++){
- QUEUE(i,&Fila);
- }
- bool pr=true;
- while(!FilaVazia(&Fila)){
- if(Fila.nItens==1){
- printf("\nRemaining card: %d\n",DEQUEUE(&Fila,pr));
- }
- else if(Fila.nItens==2){
- printf("%d", DEQUEUE(&Fila,pr) );
- }
- else{
- printf("%d, ", DEQUEUE(&Fila,pr));
- }
- pr=false;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement