[ Foro de Pascal ]

probema al ordenar array de registros?

15-Feb-2012 19:53
oscar gomez
20 Respuestas

Cordial saludo profesor nacho cabanes.

profesor es que no se que me estara pasando en un programa que he realizado y que te anexo( no pude enviartelo como adjunto por que comprimido me daba 13kb y el maximo permitido es 10kb) completo para que puedas ejecutarlo y quiza ayudarme en por que no me esta ordenando los codigos, me muestra cero en ellos, sin embargo las notas si que me las ordena al igual que las materias perdidas, la ordenacion es de mayor a menor ( descendente ) y estoy utilizando el metodo de burbuja:


el programa me pide que digite los codigos y las notas:

digite codigo del estudiante:
881170
digite la nota 1:
2.0
...
digite la nota 10:
2.0

digite codigo del estudiante:
881164
digite la nota 1:
3.0
...
digite la nota 10:
3.0

digite el codigo del estudiante:
0   ***finaliza la introduccion de datos

el reporte deberia generarme (orden descendente)

codigo  n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 promedio perdidas
------  -- -- -- -- -- -- -- -- -- --  -------  --------
881164  3   3  3  3  3  3  3  3  3  3   3.0       0
881170  2   2  2  2  2  2  2  2  2  2   2.0      10
...

las notas aunque las puse en el ejemplo del reporte como enteros , estan definidas como real.

el resultado que me esta dando y puedes comprobar con el codigo que te adjunte en documento de word es:

codigo  n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 promedio perdidas
------  -- -- -- -- -- -- -- -- -- --  -------  --------
  0    3   3  3  3  3  3  3  3  3  3   3.0       0
  0    2   2  2  2  2  2  2  2  2  2   2.0      10
...


y ese es mi problema , no entiendo de donde esta sacando esos codigos 0 y si me hace el cambio de orden para las notas y las materias perdidas.

por favor profesor ayudame para poder dar con el problema que tengo ,en espere de tus siempre valiosas ayudas gracias y mil gracias

program notas;
uses crt;
const
      maxnotas=10;
type
      estudiantes=record
        codigo:array[1..100] of longint;
        nota:array[1..maxnotas] of real;
       end;
       array_estudiantes=array[1..100] of estudiantes;
        promedio=array[1..100] of real;
       materiasPerdidas=array[1..maxnotas] of byte;
 var
   i,k, contadorEstudiantes:integer;
   estudiante:array_estudiantes;
   prom:promedio;
   mp:materiasPerdidas;
   suma:array[1..100] of real;


procedure ordenar(var est:array_estudiantes;var matper:materiasPerdidas;var promed:promedio;numEstudiantes:integer);

var
    j,l:integer;
    aux:estudiantes;
    auxprom:real;
    auxmp:byte;
begin
  for j:=1 to numEstudiantes do
    for l:=j+1 to numEstudiantes do
      if promed[j]<promed[l] then
        begin

         auxprom:=promed[l];
         promed[l]:=promed[j];
         promed[j]:=auxprom;
         auxmp:=matper[l];
         matper[l]:=matper[j];
         matper[j]:=auxmp;
         aux:=est[l];
         est[l]:=est[j];
         est[j]:=aux;
        end;
 end;  
 
begin { PROGRAMA PRINCIPAL}
 clrscr;
  writeln;writeln;writeln;writeln;
{NO SABEMOS EL NUMERO DE ESTUDIANTES, POR LO QUE UTILIZO UN CENTINELA PARA CUANDO EL CODIGO SEA CERO NO SE PIDAN MAS DATOS}
  i:=1;
  writeln('digite el codigo del estudiante: ');
  readln(estudiante[i].codigo[i]);

  while estudiante[i].codigo[i] <> 0 do
    begin

       contadorEstudiantes:=i;
        suma[i]:=0.0;
        mp[i]:=0;
        for k:=1 to maxnotas do
         begin
           writeln('introduzca la nota ',k, ':');
           readln(estudiante[i].nota[k]);
           if estudiante[i].nota[k] < 3.0  then
              mp[i]:=mp[i]+1;
           suma[i]:=(suma[i] + (estudiante[i].nota[k]));
         end;
      prom[i]:=suma[i]/maxnotas;
      i:=i+1;
      writeln('digite el codigo del estudiante: ');
      readln(estudiante[i].codigo[i]);
    end;

   clrscr;
   ordenar(estudiante,mp,prom,contadorEstudiantes);
   gotoxy(22,12);
   writeln(' ****      REPORTE DE PROMEDIOS   **** ');
   gotoxy(4,9);
   writeln('Codigo     N1  N2  N3  N4  N5   N6   N7  N8  N9  N10   PROMEDIO  MPerdidas');
   gotoxy(4,10);
   write('______     __  __  __  __  __   __   __  __  __  __   ________  _________');

  for i:=1 to contadorEstudiantes do
     begin
        gotoxy(4,11+i);
        write(estudiante[i].codigo[i]);
        gotoxy(14,11+i);
         for k:=1 to maxnotas do
            write( estudiante[i].nota[k]:2:1,' ');

        gotoxy(58,11+i);
        write(prom[i]:2:2);
        gotoxy(69,11+i);
        write(mp[i]);
        writeln;
      end;

 

 readkey;
end.



gracias.



 


16-Feb-2012 18:44
oscar gomez

Buenas tardes, profesor Nacho Cabanes.
creo que tenia mal el procedimiento ordenar, sin embargo aun asi sigue presentandome el problema de los codigos en 0, y no se porque?


procedure ordenar(var est:array_estudiantes;var matper:materiasPerdidas;var promed:promedio;numEstudiantes:integer);

var
    j,l:integer;
    aux:estudiantes;
    auxprom:real;
    auxmp:byte;
begin
  for j:=1 to numEstudiantes-1 do
    for l:=j+1 to numEstudiantes do
      if promed[j]<promed[l] then
        begin

         auxprom:=promed[j];
         promed[j]:=promed[l];
         promed[l]:=auxprom;
         auxmp:=matper[j];
         matper[j]:=matper[l];
         matper[l]:=auxmp;
         aux:=est[j];
         est[j]:=est[l];
         est[l]:=aux;
        end;
 end;  


por tu ayuda mil gracias.


17-Feb-2012 01:53
Luis Torres (+18)

Aquí está el programa corregido (Nota: el procedimiento ordenar lo tomé del primer código que colocastes, si hay algo que corregistes, sustituyelo en este cógigo que te presento:
program notas;
uses crt;
const
     maxnotas=10;
type
     estudiantes=record
       codigo: longint;
       {codigo:array[1..100] of longint;}
       nota:array[1..maxnotas] of real;
       end;
       array_estudiantes=array[1..100] of estudiantes;
       promedio=array[1..100] of real;
       materiasPerdidas=array[1..maxnotas] of byte;
 var
   i,k, contadorEstudiantes:integer;
   estudiante:array_estudiantes;
   prom:promedio;
   mp:materiasPerdidas;
   suma:array[1..100] of real;


procedure ordenar(var est:array_estudiantes;var matper:materiasPerdidas;var promed:promedio;numEstudiantes:integer);

var
   j,l:integer;
   aux:estudiantes;
   auxprom:real;
   auxmp:byte;
begin
 for j:=1 to numEstudiantes do
   for l:=j+1 to numEstudiantes do
     if promed[j]<promed[l] then
       begin

         auxprom:=promed[l];
         promed[l]:=promed[j];
         promed[j]:=auxprom;
         auxmp:=matper[l];
         matper[l]:=matper[j];
         matper[j]:=auxmp;
         aux:=est[l];
         est[l]:=est[j];
         est[j]:=aux;
       end;
 end;

begin { PROGRAMA PRINCIPAL}
 clrscr;
 writeln;writeln;writeln;writeln;
{NO SABEMOS EL NUMERO DE ESTUDIANTES, POR LO QUE UTILIZO UN CENTINELA PARA CUANDO EL CODIGO SEA CERO NO SE PIDAN MAS DATOS}
 i:=1;
 writeln('digite el codigo del estudiante: ');
 readln(estudiante[i].codigo);

 while estudiante[i].codigo <> 0 do
   begin

       contadorEstudiantes:=i;
       suma[i]:=0.0;
       mp[i]:=0;
       for k:=1 to maxnotas do
         begin
           writeln('introduzca la nota ',k, ':');
           readln(estudiante[i].nota[k]);
           if estudiante[i].nota[k] < 3.0  then
             mp[i]:=mp[i]+1;
           suma[i]:=(suma[i] + (estudiante[i].nota[k]));
         end;
     prom[i]:=suma[i]/maxnotas;
     i:=i+1;
     writeln('digite el codigo del estudiante: ');
     readln(estudiante[i].codigo);
   end;

   clrscr;
   ordenar(estudiante,mp,prom,contadorEstudiantes);
   gotoxy(22,12);
   writeln(' ****      REPORTE DE PROMEDIOS  **** ');
   gotoxy(4,9);
   writeln('Codigo    N1  N2  N3  N4  N5  N6  N7  N8  N9  N10  PROMEDIO  MPerdidas');
   gotoxy(4,10);
   write('______    __  __  __  __  __  __  __  __  __  __  ________  _________');

 for i:=1 to contadorEstudiantes do
     begin
       gotoxy(4,11+i);
       write(estudiante[i].codigo);
       gotoxy(14,11+i);
         for k:=1 to maxnotas do
           write( estudiante[i].nota[k]:2:1,' ');

       gotoxy(58,11+i);
       write(prom[i]:2:2);
       gotoxy(69,11+i);
       write(mp[i]);
       writeln;
     end;
 readkey;
end.


17-Feb-2012 09:24
oscar gomez

Hola Luis gracias por tu ayuda y he probado el ejercicio y si ejecuta correctamente, y note que el cambio que hiciste fue definir el campo codigo como longint y no como array que era como lo habia definido, mi pregunta para ti y ojala el profesor nacho nos de su toque de profesor y experiencia para resolver el por que pasa esto, si utilizo array en el codigo o por que no se puede, o si se puede entonces cual es el problema, mil gracias por todo y en espera de saber el porque, pues se me hace raro que no pueda utilizar el array en codigo.


17-Feb-2012 17:49
Luis Torres (+18)

No se necesitaba un array para almacenar UN SOLO CODIGO por alumno y, para referenciarlo sólo es necesario el índice del alumno para cada alumno. Está demás utilizar un array. Saludos.


17-Feb-2012 23:13
oscar gomez

Hola luis muy amable por responderme, y claro tenes toda la razon no habia caido en cuenta en ello , esta muy bien tu explicacion.


Luis queria que me revizaras que problema tengo en esta nueva ordenacion que no me la devuelve correctamente , la idea es igual , y en orden de menor a mayor. te dejo el codigo para que porfavor me ayudes a ver que me pasa con esto de las ordenaciones, me volvi tonto parece que no doy.te agradezco me ayudes a ver que pasa en este problema.gracias.


program personas_caminando;
uses crt;
const numpart=4;
     numvueltas=4;
type
    cadena=string[30];
     persona=record
      nombre,pais:cadena;
      t:array[1..numvueltas] of integer;
     end;
    carrera=array[1..numpart] of persona;
    tiempos=array[1..numpart] of integer;

var
    c:carrera;
    i,j:integer;
    pais:cadena;
    tiempo:tiempos;
       





 procedure ordenar(var c:carrera;var tiemp:tiempos;numpart:integer);  

  var
    k,l:integer;

    aux:persona;
    auxt:integer;
     begin
       {ordeno por burbuja de menor a mayor}
         for k:=1 to numpart-1 do
          for l:=k+1 to numpart do
            if tiemp[k]>tiemp[l] then
              begin
               auxt:=tiemp[k];
               tiemp[k]:=tiemp[l];
               tiemp[l]:=auxt;
               aux:=c[k];
               c[k]:=c[l];
               c[l]:=aux;
               end;

    [muestro las tres primeras personas ordenadas de menor a mayor}
     FOR k:=1 to 3 do
        begin
          GOTOXY(2,31+k);
          WRITE(c[k].nombre,' ');
          GOTOXY(16,31+k);
          WRITE(c[k].pais);
          for l:=1 to numvueltas do
           begin
            GOTOXY(22+10*l,31+k);
            WRITE(c[k].t[l]);
            WRITELN;
            end;
          end;
      end;



 begin
   clrscr;
   writeln;writeln;writeln;writeln;
   for i:=1 to numpart do
     begin
       writeln('introduzca el nombre de la persona: ');
       readln(c[i].nombre);
       writeln('introduzca la nacionalidad de la persona: ');
       readln(c[i].pais);
       for j:=1 to numvueltas do
        begin
          writeln('introduca el tiempo ',j,':');
          readln(c[i].t[j]);
         end;
      end;

      clrscr;
       GOTOXY(17,7);
       WRITELN(' ********  DATOS DE ENTRADA ******** ');
       WRITELN;
       GOTOXY(7,9);
       WRITELN(' Nombre      Nacionalidad   Tiempo1   Tiempo2   Tiempo3   Tiempo4');
       GOTOXY(7,10);
       WRITE('_______      ____________   _______   _______   _______   _______');
       WRITELN;WRITELN;WRITELN;
       FOR i:=1 to numpart do
        begin
          GOTOXY(7,10+i);
          WRITE(c[i].nombre,' ');
          GOTOXY(21,10+i);
          WRITE(c[i].pais);
          for j:=1 to numvueltas do
           begin
            GOTOXY(27+10*j,10+i);
            WRITE(c[i].t[j]);
            WRITELN;
            end;
          end;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;

      ordenar(c,tiempo,numpart);





      readkey;
   end.



18-Feb-2012 00:06
Luis Torres (+18)

Explícame, primero, ¿cómo quieres ordenarlo?, ¿cuál es el criterio de ordenación?, ¿en base a cuál variable?. Explícame para saber qué es lo que quieres tú que el programa haga. Si me puedes poner un ejemplo te lo agradecería. Saludos.


18-Feb-2012 01:20
Luis Torres (+18)

En el procedimiento ordenar, he notado que pasas la variable tiempo, pero esta variable no contiene ningún valor. Si estás pensando que dicho parámetro es el mismo que usastes para llenar los tiempos de cada participante, estás equivocado. Eso es lo que he observado hasta ahora, y es el mismo error que tienes en el primer programa (mismo procedimiento). De todas maneras, espero la explicación de cómo quieres ordenarlo. Saludos


18-Feb-2012 19:44
oscar gomez

Cordial saludo Luis y por supuesto a nuestro profesor Nacho.

Luis tenias toda la razon el problema era el de la variable tiempo y creeme error no de concepto sino de cuidado, y claro no lo veia ,pero gracias a ti lo solucione perfectamente y te lo agradezco muchisimo.

Luis queria no se si te parezca mi idea,no se si estas estudiando o ya terminaste, pero mi idea es si quieres como practica nuestra intentar resolver entre los dos (y con la ayuda del profesor Nacho cuando nos sea necesario para no agobiarlo, pues muchisimo tiene con su trabajo y a dios gracias nos atiende siempre con su brillantes, amabilidad y vocacion indiscutible de profesor), el juego del cuatro en raya, por ahora sin la parte grafica que del todo no estoy muy empapado pero podriamos desarrollarlo sin parte grafica,o algun ejercicio que nos llame la atencion , no se me gusta cada vez practicar y bueno espero la idea te suene y lo coordinemos bien sea por aqui o directamente a traves de nuestras direcciones de email personales para logicamente no invadir este espacio que nos brinda el profesor nacho.mi direccion por si te parece es oscarydey2002@hotmail.com. me cuentas, estare atento y mil gracias por sacarme de esta laguna absurda de apreciacion.hasta luego y espero me respondas para bien o para mal.


19-Feb-2012 15:09
oscar gomez

program personas_caminando;
uses crt;
const numpart=4;
     numvueltas=4;
type
    cadena=string[30];
     persona=record
      nombre,pais:cadena;
      t:array[1..numvueltas] of integer;
     end;
    carrera=array[1..numpart] of persona;
    tiempos=array[1..numpart] of integer;

var
    c:carrera;
    i,j:integer;
    pais:cadena;
    tiempo:tiempos;
       





 procedure ordenar(var c:carrera;var tiemp:tiempos;numpart:integer);  

  var
    k,l:integer;

    aux:persona;
    auxt:integer;
     begin
       {ordeno por burbuja de menor a mayor}
         for k:=1 to numpart-1 do
          for l:=k+1 to numpart do
            if tiemp[k]>tiemp[l] then
              begin
               auxt:=tiemp[k];
               tiemp[k]:=tiemp[l];
               tiemp[l]:=auxt;
               aux:=c[k];
               c[k]:=c[l];
               c[l]:=aux;
               end;

  GOTOXY(17,29);
       WRITELN(' ********  LOS MAS RAPIDOS  ******** ');
       WRITELN;WRITELN;WRITELN;
       GOTOXY(2,30);
       WRITELN(' Nombre      Nacionalidad   Tiempo1   Tiempo2   Tiempo3   Tiempo4');
       GOTOXY(2,31);
       WRITE('_______      ____________   _______   _______   _______   _______');
       WRITELN;WRITELN;WRITELN;
       FOR k:=1 to 3 do
        begin
          GOTOXY(2,31+k);
          WRITE(c[k].nombre,' ');
          GOTOXY(16,31+k);
          WRITE(c[k].pais);
          for l:=1 to numvueltas do
           begin
            GOTOXY(22+10*l,31+k);
            WRITE(c[k].t[l]);
            WRITELN;
            end;
          end;

   end;


 begin
   clrscr;
   writeln;writeln;writeln;writeln;
for i:=1 to numpart do
tiempo[i]:=0;
   for i:=1 to numpart do
     begin
       writeln('introduzca el nombre de la persona: ');
       readln(c[i].nombre);
       writeln('introduzca la nacionalidad de la persona: ');
       readln(c[i].pais);
       for j:=1 to numvueltas do
        begin
          writeln('introduca el tiempo ',j,':');
          readln(c[i].t[j]);
      tiempo[i]:=tiempo[i]+(c[i].t[j]);
         end;
         writeln('el tiempo para el atleta ',i, 'es: ' ,tiempo[i]);
      end;

      clrscr;
       GOTOXY(17,7);
       WRITELN(' ********  DATOS DE ENTRADA ******** ');
       WRITELN;
       GOTOXY(7,9);
       WRITELN(' Nombre      Nacionalidad   Tiempo1   Tiempo2   Tiempo3   Tiempo4');
       GOTOXY(7,10);
       WRITE('_______      ____________   _______   _______   _______   _______');
       WRITELN;WRITELN;WRITELN;
       FOR i:=1 to numpart do
        begin
          GOTOXY(7,10+i);
          WRITE(c[i].nombre,' ');
          GOTOXY(21,10+i);
          WRITE(c[i].pais);
          for j:=1 to numvueltas do
           begin
            GOTOXY(27+10*j,10+i);
            WRITE(c[i].t[j]);
            WRITELN;
            end;
          end;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;
      WRITELN;

      ordenar(c,tiempo,numpart);





      readkey;
   end.


19-Feb-2012 23:58
Nacho Cabanes (+83)

Dos cosas rápidas, Óscar:

- No deberías dar tu correo privado en un foro abierto, como este, que esté abierto a Google, para evitar bombardeos de Spam.

- Empieza por un juego de 3 en raya en modo texto, que puede ser muy fácil de hacer. Cuando ese funcione bien, te habrá ayudado a entender la mayoría de ideas que necesitas para el 4 en raya.


20-Feb-2012 17:40
Luis Torres (+18)

Por favor, Prof. Nacho, borre mi post, yo coloqué mi dirección de e-mail. No quiero ser bombardeado con spams. En cuanto al programa Las Tres En Raya, sabes, Gómez, el domingo pasado tuve un tiempo libre y me puse a hacerlo por mi cuenta. Ya lo terminé, pero no está validado. Si quieres verlo, avísame. Como lo hice apresuradamente el resultado fue un programa que se puede mejorar y optimizar su código. Hice muchas cosas, que podrían haberse hecho con bucles y así disminuir el código. Dime si quieres verlo, está hecho en modo de texto. Saludos.


20-Feb-2012 17:48
Luis Torres (+18)

¿Este es el programa finalizado?. No veo que hayas corregido el error. Danos una explicación de ¿qué es lo que quieres que haga el programa?, ¿sobre qué variable lo quieres ordenar?, danos ejemplo del resultado que esperas llegar. Saludos.


21-Feb-2012 00:02
Luis Torres (+18)

Bueno, estoy estudiando. Creo que para hacer el juego necesitaríamos la ayuda del profesor. Me gustaría desarrollarno entre varios. Encuanto al problema anterior, me gustaría que colocaras el código del mismo por este medio, quiero verlo correr en mi computadora. A veces necesitamos los ojos de otros para ver cosas que nuestras preocupaciones nos nos dejan ver. Ya tomé nota de tu dirección de e-mail, la mía es [CENSURADO]. Saludos.

(Edited by Administrador AprendeAProgramar - original submission  sábado,  18 de febrero de 2012, 22:00)


21-Feb-2012 11:11
oscar gomez

Hola luis cordial saludo. mira lo siguiente:
efectivamente si que es el programa funcionando ok, si revizas el post en este mismo hilo veras mi contestación a ti ,que dice asi:
” no se puede utlizar el codigo como un array???
de oscar gomez - viernes, 17 de febrero de 2012, 09:24


Hola Luis gracias por tu ayuda y he probado el ejercicio y si ejecuta correctamente, y note que el cambio que hiciste fue definir el campo codigo como longint y no como array que era como lo habia definido. "

Ahora referente al otro ejercicio del hilo correspondiente a la fecha que te indico dentro de los parentesis(de oscar gomez - domingo, 19 de febrero de 2012, 15:09).

si que le hice un cambio , quiza no lo viste pero revizalo que te lo envie funcionando ok para ejecucion tal cual esta, sin embargo si por algun caso no te das cuenta del cambio que hice fue este:
tiempo[i]:=tiempo[i]+(c[i].t[j]);
pues antes no estaba calculando estos tiempo y pasaba vacio el array al precedimiento.espero que lo revices y te des cuenta que te lo envie corregido ok, espero lo aproveches.Un saludo


21-Feb-2012 12:33
oscar gomez

Buenos dias profesor Nacho cabanes, agradeciendo siempre tu ayuda y atencion.
profesor si que tienes razon en lo de haber dejado mi correo abierto a spam por favor eliminame ese post para no ser blanco directo de los mismos.
respecto al consejo que me das de iniciar primero con el juego del tres en raya antes de empezar con el 4 en raya, te puedo decir que tanto mi compañero Luis con el que estamos empeñados en superarnos cada dia mas en esto de la programacion ,y que nos pusimos el reto de solucionar el 4 en raya, ambos ya hemos solucionado el juego del tres en raya, en mi caso utilice una matriz[1..3,1..3] of char , ya sabes para los caracteres "X" Y "O", eso si sin utilizar de momento nada de graficos, pero si funcionando ok con matrices y para dos jugadores. queria preguntarte de inicio si puedes orientarnos en como atacar la logica de este juego 4 en raya que cambia un poco respecto al tres en raya, no se si la mejor idea  inicial seria utilizar un tipo enumerado para las casillas enum {VACIA, BLANCA, NEGRA} TCasilla; donde TCasilla es: TCasilla TCuatroEnRaya[8][8];
si pudieras orientarnos profesor en como tratarlo de la mejor forma dandonos ideas seria de muchisima ayuda para poder iniciar nuestro pequeño reto de ir solucionandolo.mil gracias por tu ayuda.


21-Feb-2012 13:31
oscar gomez

Hola luis,cuentame una cosa ,hiciste el tres en raya contra el pc,seria super,pues contra dos jugadores no resulta ser tan complicado, y bueno lo que hablabamos de empezar con el de 4 en raya que es mas complejo dime cuando, escribeme al correo.cuidate.


22-Feb-2012 02:48
Luis Torres (+18)

Ok, ya me dí cuenta de que tomastes el "tiempo total" para ordenar a los participantes. De todas maneras el programa no presenta la lista de todas las personas con todos los datos como lo hacía el primer programa que colocastes.
Para la próxima, debes decir de acuerdo a qué variable vas a ordenar y presentar tanta información como te sea posible (sin exagerar, claro está), así se te podrá ayudar más rapidamente y encontrarás más personas dispuestas a hacerlo.
Saludos.


23-Feb-2012 18:03
Luis Torres (+18)

Hice el tres en raya con dos jugadores. ¿Cómo es el cuatro en raya?, supongo que es igual al tres en raya, pero, en vez de ser una matriz de 3x3, se utilizará una de 4x4, ¿es así?. Saludos.


23-Feb-2012 19:14
oscar gomez

Hola luis, referente a lo que me dices del tres en raya estupendo, ojalá podamos realizarlo para que el juego sea contra el pc, que es mas interesante para nosotros en cuanto a pratica de programacion.yo tambien lo hice para dos jugadores, contra el pc tengo dudas de como hacerlo, a ver si en una ocasion lo miramos.

referente a lo del juego del CUATRO EN RAYA , NO ES LO MISMO QUE EL TRES EN RAYA, ASI QUE LO ME DICES DE PODER UTILIZAR " una matriz de 3x3, se utilizará una de 4x4"  
NO ES PARA ESTE JUEGO. te dejo el enunciado y si gustas empezamos a intentar hacerlo y nuestras dudas seguramente el profesor nacho nos heche una mano como siempre sabe hacerlo.

En el juego de las “cuatro en raya” dos jugadores juegan con un
tablero vertical de tamaño (m x n). Cada jugador, que dispone de
fichas de un color (negro o blanco), intenta formar una línea
(horizontal, vertical o diagonal) con cuatro fichas de su color. Para ello, los jugadores alternativamente introducen fichas en el tablero eligiendo una de sus columnas. Una vez elegida la columna, la ficha se deja caer por ella de manera que ocupará la primera fila libre.
ese es el juego , si quieres entenderlo mejor puedes entrar a google y buscar juego del 4 en raya en linea para que te familiarices en el juego y podamos iniciar intentar resolverlo.
ya me contaras y estamos en contacto, ya sabes que tenes mi correo cuando creas conveniente me escribes por alli y me cuentas.


25-Feb-2012 00:49
Luis Torres (+18)

Bueno, esta semana y la siguiente estoy muy ocupado, porque tengo que terminar y entregar un trabajo en Pascal. Pero voy a empaparme más con el juego, buscando el google y jugándolo. Creo que lo más sano sería hacer un post en este mismo foro y, que el profesor nos dé las directrices de cómo solucionarlo. Teniendo claro el esquema de solución podremos arrancar. Así que, dame tú tus sugerencias. Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)