0

条件に基づいてキューに挿入され、条件に基づいてスタックに再度プッシュされる値のリストがあります。キューに挿入される各変数を追跡し、各要素がスタックにプッシュされる時間を保存したいと考えています。
単にタイマーを維持する必要があることを意味します。これどうやってするの?現在、各要素を追跡する手がかりがありません。

カウントを必要とするプログラムの関数は次のとおりです。

while(!isqueueFull(&belt))
{
    insert(&belt,theorder->meringue);   //i want to keep a timer for each of these values getting inserted
    insert(&belt,theorder->chocalate);
    insert(&belt,theorder->red_velvet); 
    insert(&belt,(theorder->spongecake));       
}

value1=removes(&belt);
push(&baking,value1);

if(!isFull(&baking))
{
    for(;v<=MAX;v++)
    {
        if(counter%4==0)
        {
            value1=theorder->meringue;
            counter=counter+2;
        }
        else
        {   
                if(!isEmpty(&baking))
                  {
                     printf("\n%d",pop(&baking));
                  } 
                else
                {   
                    value2=removes(&belt);   

                    if(value1>=value2)    
                    {
                         while(!isFull(&baking))     
                         {      
                            push(&baking,value2); //if this gets executed i need to store the time where the value got in to stack.
                            value1=value2;
                            counter++;
                            break;           
                         }     
                     }

                    if(value1<value2 && value1!=value2) 
                    {   
                      while(!isqueueEmpty(&belt))
                      { 
                       insert(&belt,value2);    
                           break;        
                      } 
                    }
                }
        }
    }
}   
4

1 に答える 1

0

一部の IDE (visual studio など) およびデバッグ ツール (gdb など) は、デバッグ時に変数を追跡することをサポートしていますが、プログラム自体で変数を追跡することができます。

1 つの方法は、2 つの関数を作成して、キューとスタック内のすべての要素を出力することです。

insert()/remove()/push()/pop()を呼び出すたびに、対応するものを連続して呼び出します。

前の質問のキューのように、キュー内 のすべての要素を表示する関数は次のようになります。

int queue_display(struct Queue *q) {
    if(isEmpty(q)) 
        return 0;
    else
    {
        int p=q->front,count=q->count;
        printf("queue from front to rear:\n");
        do {
            printf("%d ",q->cake[p]);
            count--;
            p = (p+1)%10;
        } while(count>0);
        printf("\n\n");
    }
}

スタック用のものは似ています。

于 2013-05-31T02:10:09.083 に答える