Advertisement
GuiBrust

Untitled

Oct 15th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //cria fila onde sera feito o monte das cartas
  5. struct Fila{
  6.     int ini;
  7.     int fim;
  8.     int dados[51];
  9.     int nItens;
  10. };
  11.  
  12. void Criafila(struct Fila *F){
  13.     F->ini=0;
  14.     F->fim=0;
  15.     F->nItens=0;
  16. }
  17.  
  18. int FilaVazia(struct Fila *F)
  19. {
  20.   if(F->nItens==0)
  21.     return 1;
  22.   else
  23.     return 0;  
  24. }
  25. int FilaCheia(struct Fila *F)
  26. {
  27.   if(F->nItens==51)
  28.     return 1;
  29.   else
  30.     return 0;  
  31. }
  32.  
  33. void QUEUE(int VLR,struct Fila *F){
  34.    
  35.     F->dados[F->fim]=VLR;
  36.     F->fim=(F->fim+1)%51;  
  37.     F->nItens++;
  38. }
  39.  
  40. int DEQUEUE(struct Fila *F, bool pr){
  41.   int sai,aux;
  42.   if(pr){
  43.       printf("Discarded cards: ");
  44.   }
  45.   sai=F->dados[F->ini];  
  46.   F->ini=(F->ini+1)%51;
  47.   F->nItens--;
  48.  
  49.  
  50.   //essa parte diferencial
  51.   aux=F->dados[F->ini];
  52.   QUEUE(aux, F);
  53.   F->ini=(F->ini+1)%51;
  54.   F->nItens--;
  55.  
  56.   return sai;
  57. }
  58.  
  59. int main(int argc, char** argv){   
  60.     int n;
  61.     struct Fila Fila;
  62.    
  63.    
  64.     while(n!=0)
  65.     {
  66.        
  67.         scanf("%d", &n); //será a sequencia de numeros
  68.         Criafila(&Fila);
  69.        
  70.         for(int i=1; i<=n;i++){
  71.             QUEUE(i,&Fila);
  72.         }
  73.         bool pr=true;
  74.         while(!FilaVazia(&Fila)){
  75.            
  76.             if(Fila.nItens==1){
  77.                 printf("\nRemaining card: %d\n",DEQUEUE(&Fila,pr));
  78.             }
  79.             else if(Fila.nItens==2){
  80.                 printf("%d", DEQUEUE(&Fila,pr) );
  81.             }
  82.             else{
  83.                 printf("%d, ", DEQUEUE(&Fila,pr));
  84.             }
  85.                pr=false;   
  86.         }
  87.     }
  88.    
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement