Pascal/Turbo Pascal - Problema de las n Reinas - monitor en pascal

 
Vista:

Problema de las n Reinas - monitor en pascal

Publicado por Xio (1 intervención) el 26/06/2014 01:32:23
Hola .. me han pedido el codigo en pascal fc del Problema de las n Reinas .. me pueden ayudar con cualquier colaboracion .. pidieron que este implementado en monitor ..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema de las n Reinas - monitor en pascal

Publicado por ramon (39 intervenciones) el 28/06/2014 01:04:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
{Mira esto es loque quieres pasa lo a monitor}
 
program reinas_o_damas;
  uses
     crt;
   const
       reinas = 8;
       damas = 8;
 
   type
      tablero = array[1..reinas] of 1..damas;
 
   var
     modo : Integer;
     dam1,dam2,dam3,dam4,dam5,dam6,dam7,dam8 : integer;
     rey1, rey2 : integer;
     px : tablero;
     cont : byte;
     k : integer;
 
   function solucion_diagonal(desd : tablero) : boolean;
   begin
      cont := 1;
      for rey1 := 1 to 7 do
        for rey2 := rey1 + 1 to reinas do
        if (desd[rey2] + rey2 = desd[rey1] + rey1) or
           (desd[rey2] - rey2 = desd[rey1] - rey1) then
        cont := 0;
        if cont = 0  then
        solucion_diagonal := false
     else
        solucion_diagonal := true;
   end;
 
   procedure presenta_resultado(desd : tablero);
   begin
      for k := 1 to damas do
      write(desd[k]);
      write('  ');
   end;
 
   procedure colocar;
   begin
      for dam1 := 1 to damas do
        for dam2 := 1 to damas do
        if dam2 <> dam1 then
         for dam3 := 1 to damas do
          if not (dam3 in[dam1,dam2]) then
          for dam4 := 1 to damas do
           if not (dam4 in[dam1,dam2,dam3]) then
            for dam5 := 1 to damas do
             if not (dam5 in[dam1,dam2,dam3,dam4]) then
              for dam6 := 1 to damas do
              if not (dam6 in[dam1,dam2,dam3,dam4,dam5]) then
              for dam7 := 1 to damas do
              if not (dam7 in[dam1,dam2,dam3,dam4,dam5,dam6]) then
              for dam8 := 1 to damas do
          if [dam1,dam2,dam3,dam4,dam5,dam6,dam7,dam8] = [1..reinas] then
          begin
            px[1] := dam1;
            px[2] := dam2;
            px[3] := dam3;
            px[4] := dam4;
            px[5] := dam5;
            px[6] := dam6;
            px[7] := dam7;
            px[8] := dam8;
            if solucion_diagonal(px) then
            presenta_resultado(px);
          end;
     end;
 
 
   begin
       modo := lastmode;
       textcolor(15);
       textmode(c80);
       colocar;
       readkey;
       textmode(modo);
       textcolor(7);
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar