Red de conocimiento informático - Conocimiento informático - 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.

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.