J'essaie d'obtenir la sortie de ce programme correctement, mais je ne suis pas en mesure de le faire. C'est parce que je ne suis pas en mesure d'entrer une chaîne dans la fonction insert() après la ligne "printf (" Entrez la chaîne à insérer = \ n ");" bien que j'utilise gets() avec le fichier d'en-tête approprié. La sortie je reçois quelque chose comme ceci:Impression de file d'attente circulaire en C
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
Queue is empty
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
4
Le programme que j'ai écrit comme suit:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 5
int front = 0;
int rear = -1;
char queue_array[MAX][30];
void insert();
void Delete();
void display();
int main()
{
int choice;
while(1)
{
printf("Choice 1 : Enter element into Queue\n");
printf("Choice 2 : Delete element from Queue\n");
printf("Choice 3 : Display\n");
printf("Any other choice : Exit\n");
printf("Enter your choice\n");
scanf("%d", &choice);
switch(choice)
{
case 1: insert();
break;
case 2: Delete();
break;
case 3: display();
break;
default:exit(0);
} // End of switch()
} // End of while()
} // End of main()
void insert()
{
char add_item[30];
if((front == 0 && rear == MAX - 1) || (front != 0 && rear == front - 1))
printf("Queue is full\n");
else
{
printf("Enter the string to be inserted = \n");
gets(add_item);
if(rear == MAX - 1 && front != 0)
{
rear = 0;
strcpy(queue_array[rear], add_item);
}
else
{
rear = rear + 1;
strcpy(queue_array[rear], add_item);
}
}
}
void Delete()
{
char del_item[30];
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
if(front == rear)
{
strcpy(del_item, queue_array[front]);
front = 0;
rear = -1;
}
else if(front == MAX - 1)
{
strcpy(del_item, queue_array[front]);
front = 0;
}
else
{
front = front + 1;
strcpy(del_item, queue_array[front]);
}
printf("Deleted string is =\n");
puts(del_item);
} // End of delete()
void display()
{
int i, j;
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
printf("The contents of the queue are ");
if(front > rear)
{
for(i = 0; i <= rear; i++)
puts(queue_array[i]);
for(j = front; j < MAX - 1; j++)
puts(queue_array[j]);
}
else
{
for(i = front; i <= rear; i++)
puts(queue_array[i]);
}
printf("\n");
} // End of display()
Je voudrais vraiment apprécier toute aide. Merci d'avance :)
Merci, man! Remplacement obtient avec scanf() travaillé. Mais encore, je suis seulement capable de passer 80% des cas de test pour ce problème! –