ayuda con este ejercicio

Noe
13 de Febrero del 2005
/*Ejercicio 2.- El hospital Clínico Universitario de Valladolid desea, para gestionar el
servicio de urgencias, hacer un programa que permita:
1. Dar de alta a las personas que llegan a una consulta. Se pedirá el nombre y la prioridad,
que podrá ser 1, 2 o 3.
2. Seleccionar la siguiente persona para ser atendida. El programa elegirá a la que tenga
mayor prioridad, y en caso de empate a la que haya llegado antes. El nombre de la persona
elegida será mostrado en pantalla y ésta será eliminada pues se supone que ya ha sido atendida.
3. Listar los nombres y prioridades de todas las personas que están esperando.*/
//Programa realizado por Noelia Sanz Peñas
#include <stdio.h>
#include <conio.h>
#include <string.h>
void menu();
void altas(struct urgencias *pac);
void siguiente(struct urgencias pac[]);
void listar(struct urgencias pac[]);

struct urgencias
{
char nombre[20];
int prioridad;
}pac[3];

//______________________________________________________________________________
int i=0;
void main()
{

int op;
char opc;
do
{
clrscr();
menu();
scanf("%d",&op);
switch(op)
{
case 1: do
{
altas(&pac[i]);
i++;
printf("nDesea introducir otro paciente?(S/N): ");
fflush(stdin);
opc=getche();
}while((opc=='s')||(opc=='S')&&(i<3));break;

case 2: siguiente(pac);break;
case 3: listar(pac);break;
}
}while(op!=4);
getch();
}
//______________________________________________________________________________

void menu()
{
printf("ttt M E N U");
printf("nttt_______________");
printf("nnttt1) AGREGAR PACIENTE A LA LISTA DE ESPERA");
printf("nttt2) SELECCIONAR AL SIGUIENTE PACIENTE EN SER ATENDIDO");
printf("nttt3) VER LISTA DE PACIENTES EN LISTA DE ESPERA");
printf("nttt4) SALIR");
printf("nntttElija una opcion: ");
}
//______________________________________________________________________________

void altas(struct urgencias *pac)
{
clrscr();
printf("ntttAGREGAR PACIENTE A LISTA DE ESPERA");
printf("ntt___________________________________________");
printf("nnttNOMBRE: ");
fflush(stdin);
gets(pac->nombre);
do{
printf("nttPRIORIDAD (1=MAX,2=MED,3=MIN)");
scanf("%d",&pac->prioridad);
}while((pac->prioridad<=0)||(pac->prioridad>3));
}
//______________________________________________________________________________

void siguiente(struct urgencias pac[])
{

struct urgencias pac2[3];
int max,pos=0,x=0,j=0;
max=pac[0].prioridad;
for(i=1;i<3;i++)
{
if((pac[i].prioridad<max)&&(pac[i].prioridad!=0))
{
max=pac[i].prioridad;
pos=i;
}
}
textcolor(3);
cprintf("Paciente seleccionado");
printf("n____________");
printf("nnPACIENTE %d",pos+1);
printf("nNOMBRE:%s",pac[pos].nombre);
printf("nPRIORIDAD: %d",pac[pos].prioridad);
i=0;
j=0;
do
{
if(i!=pos)
{
strcpy(pac2[j].nombre,pac[i].nombre);
pac2[j].prioridad=pac[i].prioridad;
j++;

}
i++;

}while(x<3);
for(x=0;x<3;x++)
{
strcpy(pac[i].nombre,pac2[i].nombre);
pac[i].prioridad=pac2[i].prioridad;
}
i--;
}
//______________________________________________________________________________

void listar (struct urgencias pac[])
{
int j;
clrscr();
for(j=0;j<i;j++)
{
printf("nnPACIENTE %d",j+1);
printf("n____________");
printf("nnNOMBRE: %s",pac[j].nombre);
printf("nPRIORIDAD: %d",pac[j].prioridad);
}
}
Me gustaria saber que me falla en este ejercicio si alguien me lo pudiera corregir antes del 24 de este mes se lo agradeceria mucho
gracias
espero respuestas