Pregunta del ladrón: Hay cuatro personas A, B, C y D. A dijo: No soy un ladrón; B dijo: C es un ladrón; C dijo: D es un ladrón; D dijo: C agravió a la gente.
Análisis: El significado de la pregunta es que solo uno es ladrón, y uno de los cuatro miente, y el que miente es el ladrón. Teniendo esto en cuenta, supongamos que alguien es un ladrón y juzguemos si lo que dicen 4 personas es verdadero o falso. Cuando lo que dicen 3 personas es cierto, esa es la solución a este problema. La programación en C++ es la siguiente:
#include
usando namespace std
int main()
{
char ladrón;
for (ladrón='a';ladrón<='d';ladrón++)
if ((ladrón!='a') +( ladrón=='c')+(ladrón=='d')+(ladrón!='d')==3) cout< } No conozco el lenguaje PASCAL, pero puedes convertirlo. La salida del programa es C, y C es el ladrón. Sustituyamos lo que dijeron 4 personas: 1. A dijo que no soy un ladrón, lo cual es cierto. 2. B dijo que C es un ladrón, lo cual es cierto. 3. C dijo que D es un ladrón, lo cual no es cierto. 4. D dijo que C había hecho daño a alguien (D no es un ladrón), lo cual es cierto. Entonces la solución final a esta pregunta es que C es el ladrón, ¡todos, vengan a atraparlo! ¡Oye, oye! Una vez estudié Delphi por un tiempo, que también se basa en el lenguaje Pascal, así que lo usaré para compilar uno en Delphi: procedure TForm1.Button1Click(Sender: TObject) ; var thief:char; comenzar para ladrón:='a' a 'd' hacer comenzar if (ord(ladrón<>'a')+ord(ladrón='c')+ord(ladrón='d')+ord(ladrón<>'d' ))=3 luego edit1.Text:=edit1.Text+' '+thief; end; end; Conviértalo y quedará DE ACUERDO. Lo anterior se compila y pasa en delphi7.0.