Pascal/Turbo Pascal - Comparar elementos Matriz

   
Vista:

Comparar elementos Matriz

Publicado por Edd (3 intervenciones) el 11/11/2013 01:46:29
Que tal, tengo una duda sobre un procedimiento que tengo que hacer, básicamente lo que hay que hacer es comparar elementos de una matriz 8x8 y ver si son iguales entre sí.
Debe haber al menos 3 elementos iguales para que sea válido, es decir, es como el Candy Crush (para los que no lo conocen, hay que formar al menos 3 elementos del mismo tipo en línea)

El problema es, logro compararlos de a 3, es decir

Tomando 3 elementos y poniendolos en variables "comparar" obtengo:

if (comparar1=comparar2) and (comparar=comparar3) THEN

Pero ésto solo compara de a 3, cuando hay 4 elementos en línea, me repite las posiciones anteriores, es decir que me marca por ejemplo las posiciones: 2,3 2,4 2,5 y si hay 4 elementos iguales me marca 2,3 2,4 2,5 2,4 2,5 2,6 repitiendome 2 elementos.

Alguna idea como podría evitar que me repita elementos y los compare cuando son mas de 3? Saludos
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

Comparar elementos Matriz

Publicado por ramon (2072 intervenciones) el 11/11/2013 18:29:43
Puedes pasar lo que tienes para poner donde falla
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

Comparar elementos Matriz

Publicado por ramon (2072 intervenciones) el 11/11/2013 19:33:40
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
83
84
85
86
87
{Mira a ver si esto te sirve}
 
program juego;
 uses
    crt;
  type
    matriz = array[1..8,1..8] of integer;
  var
    matri : matriz;
    x, y, cont1, cont2 : integer;
 
  procedure rellenamatriz;
  var
     valor : integer;
     num, x, y : integer;
   begin
     randomize;
     num := 1;
     x := 1;
     y := 1;
   repeat
       valor := random(4) + 1;
       matri[x,y] := valor;
       x := x + 1;
       if x > 8 then
       begin
          y := y + 1;
          x := 1;
       end;
      num := num + 1;
   until num > (8 * 8);
   end;
 
 
  procedure revisalinea;
  var
     p, n, l, c : integer;
     cuenta, num : integer;
  begin
      l := 1;
      c := 1;
      p := 0;
      num := matri[l,c];
      cuenta := 0;
   repeat
     for n := 2 to 8 do
     begin
     if matri[n,c] = num then
     begin
     cuenta := cuenta + 1;
     end
   else
     begin
        if cuenta >= 3 then
        begin
           gotoxy(1,c + p);write(' Tiene ',cuenta + 1,'  col. ',c,'  lin. ',
               (n - (cuenta + 1)),' A ', n - 1,' Numero ',num);
            p := p + 1;
        end;
        cuenta := 0;
        num := matri[n,c];
     end;
   end;
      l := 1;
      c := c + 1;
      p := 0;
      cuenta := 0;
      num := matri[l,c];
    until c >= 9;
  end;
 
 
  begin
     clrscr;
     rellenamatriz;
     x := 40;
     y := 5;
     for cont2 := 1 to 8 do
     begin
      for cont1 := 1 to 8 do
      begin
      gotoxy(x + (cont1 * 2),y + (cont2 * 2));write(matri[cont1,cont2]);
      end;
    end;
    revisalinea;
    readkey;
  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