0

条件に基づいてキューに値を挿入しようとしています。条件は、以前に入力された値が、挿入される値よりも大きくなければならないことです。私の問題は、提供されたデータによると、1 つの値が他のすべての値よりも小さいため、他の値がキューに挿入されないことです。

私は手がかりもなく、一日中ここで立ち往生しています。

これが私がこれまでに行ったことです:

    #include<stdio.h>
    #include<malloc.h>
    #define MAX 180

    struct cakes{
      int spongecake;
      int meringue;
      int chocalate;
      int red_velvet;
      struct newcake *next;
    };

    struct Queue{
       int front;
       int rear;
       int count;
       int cake[10];
    };

    void order_out(struct cakes *); 
    void init(struct Queue *);
    int isFull(struct Queue *);
    void insert(struct Queue *,int);
    int isEmpty(struct Queue *);
    int removes(struct Queue *);

   main()
   {
      struct cakes *head;
      head=(struct cakes*)malloc(sizeof(struct cakes));
      order_out(head);
   }

   void init(struct Queue *q)
   {
        q->front=0;
        q->rear=10-1;
        q->count=0;
   }

   int isFull(struct Queue *q)
   {
        if(q->count==10)
        {
         return 1;
        }
        else 
        {
             return 0;
        }
   }

  void insert(struct Queue *q,int x)
  {
      if(!isFull(q))
      {
         q->rear=(q->rear+1)%10;
         q->cake[q->rear]=x;
         q->count++;
      }
  }

  int isEmpty(struct Queue *q)
  {
      if(q->count==0)
      {
          return 1;
      }
      else
      {
          return 0;
      }
  }

  int removes(struct Queue *q)
  {
      int caked=NULL;

      if(!isEmpty(q))
      {
          caked=q->cake[q->front];
          q->front=(q->front+1)%10;
          q->count--;
          return caked;
      }
   }

   void order_out(struct cakes *theorder)
   {
        struct Queue s;
        int k=0;
        int i=1;    
        int value1;
        int value2;

        int counter=1;
        theorder->spongecake=20;
        theorder->meringue=75;
        theorder->chocalate=40;
        theorder->red_velvet=30;


        init(&s);
        insert(&s,theorder->chocalate);

        value1=theorder->chocalate;


        for(;k<10;k++)  
        {
            if(value1>theorder->spongecake)
            {
                insert(&s,theorder->spongecake);
                value1=theorder->spongecake;
            }

            if(value1>theorder->meringue)
            {
                insert(&s,theorder->meringue);
                value1=theorder->meringue;
            }

            if(value1>theorder->red_velvet)
            {
                 insert(&s,theorder->red_velvet);
                 value1=theorder->red_velvet;
            }
        }

        while(!isEmpty(&s)) 
        {   
            printf("\n%d",removes(&s));
        }
}

キューに入力された他の値を作成する方法についてのアイデアと同時に、前の値が現在の値よりも大きいかどうかを確認します。

編集 :

カウント % 値 1 == 0 の場合にカウントの意味を追加しようとしましたが、5 を掛けて値 1 をより大きな値にしようとしましたが、それでもこれら 2 つの値のみが挿入されました。

お時間をいただきありがとうございます。

4

0 に答える 0