¡Hola phantom! no se si ya habéis solucionado tu problema, de todas formas igual aporto algo que tal vez os ayude ahora o mas adelante:
}while(letra!='E' || letra !='p' || letra!='C');
En esta línea de tu code tienes un error lógico debido a que le estas diciendo que se repita mientras se cumpla UNA de las tres condiciones y deberían ser las TRES para que sea efectivo, en ese sentido deberíais cambiar el '||' por '&&', además basta con usar un solo ciclo.
Tu code modificado quedaría así:
int main ()
{
char letra='o';
int repetir;
do
{
clrscr();
printf("introduzca la letra de identificador E-Empleado, C-Cliente, P-Producto\n");
scanf("%c",&letra);
}while(letra!='E' && letra !='P' && letra!='C');
printf("Letra --> %c",letra);
getch();
}
Acá otra forma de hacer lo mismo:
#include <stdio.h>
#include<conio.h>
char Letra;
int main()
{
Repetir:;
clrscr();
printf("introduzca la letra de identificador E-Empleado, C-Cliente, P-Producto\n");
scanf("%c",&Letra);
if ((Letra!='P') && (Letra!='C') && (Letra!='E'))
{
printf("\n\nlee antes de introducir el caracter! os dije C, P o E!");
getchar();getchar();
goto Repetir;//Repetir mientras no sea correcta la entrada
}
clrscr();
printf("La letra de entrada es %c",Letra);
getchar();getchar();
}
Espero que aun os pueda servir, ¡S4lu2!