• Viernes 8 de Noviembre de 2024, 07:18

Autor Tema:  Realización De Cuadrícula.  (Leído 5348 veces)

aarias

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Realización De Cuadrícula.
« en: Miércoles 15 de Agosto de 2007, 17:58 »
0
Buenas, estoy teniendo un problema para realizar un trabajo. La idea es realizar una matriz cuadrada, tengo que mostrar los cuadrados que separarían cada valor de la matriz y esta cuadricula tiene que variar de tamaño con solo cambiar una constante.
Por ejemplo: tengo una matriz 3x3 entonces la cuadricula debe contener a todos los elementos de la matriz y si cambio la constante que delimita en tamaño de la matriz la cuadricula debe realizar el trabajo sin sufrir más alteraciones que el cambio de la constante.

Adjunto un archivo para que vean como es lo que se tiene que lograr.

¿Alguien tiene idea de como hacer esto?

gracias por la ayuda. saludos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Realización De Cuadrícula.
« Respuesta #1 en: Miércoles 15 de Agosto de 2007, 19:36 »
0
Pues si tengo idea, pero que haz intentado, yo lo haria con gráficos y lo demas es de lógica convencional, en que te haz atorado...
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

aarias

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Realización De Cuadrícula.
« Respuesta #2 en: Miércoles 15 de Agosto de 2007, 20:03 »
0
Gracias por responder.
El tema pasa por que tenemos muchas acotaciones en el trabajo, hay funciones que no podemos usar, la librería de graficos.h no la podemos usar tampoco, logro generar un cuadrado pero no logro que se vaya desplazando en la pantalla y siempre me queda en una esquina.
Sino logro que se forme una cuadrícula en toda la pantalla, pero no que se ajuste al tamaño que yo quira.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Realización De Cuadrícula.
« Respuesta #3 en: Miércoles 15 de Agosto de 2007, 23:22 »
0
puedes usar gotoxy?
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

aarias

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Realización De Cuadrícula.
« Respuesta #4 en: Viernes 17 de Agosto de 2007, 17:03 »
0
Si puedo usar Gotoxy. Lo logré resolver de la siguiente manera, quizás tu tienes una forma más elegante de solucionar le problema y se aceptarán y agradecerán las sugerencias. Y si de paso le sirve a alguien más te mando el código.


#include<stdio.h>
#include<conio.h>
const int N=7;
const int cantcar=3; /*indico el largo máximo que pueden tener los números
                                 ejemplo 100 Cantcar=3 */

void main()
{
  int r1,c1,r2,c2;
  clrscr();
  textcolor(10);
  gotoxy(1,1);
  cprintf("%c",218);
  gotoxy(1,(N+(N+1)));
  cprintf("%c",192);
  r1=1;
/*formo la linea superior he inferior del cuadrille*/
  for(c1=2;c1<=(cantcar*N+N);c1++){
     gotoxy(c1,1);
     cprintf("%c",196);
     gotoxy(c1,(N+(N+1)));
     cprintf("%c",196);
  }

/*formo los angulos superior he inferior del cuadrille, del lado derecho*/
     gotoxy((cantcar*N+(N+1)),1);
     cprintf("%c",191);
     gotoxy((cantcar*N+(N+1)),(N+(N+1)));
     cprintf("%c",217);

/*formo los laterales del cuadrille*/
   for(r1=2;r1<=(N+N);r1++){
       gotoxy(1,r1);
       cprintf("%c",179);
       gotoxy((cantcar*N+(N+1)),r1);
       cprintf("%c",179);
   }

/*formo las lineas horizantales dentro del cuadrille*/
   for(r1=3;r1<=(N+N);r1+=2){
      for(c1=2;c1<=(cantcar*N+N);c1++){
         gotoxy(c1,r1);
         cprintf("%c",196);
      }
      /*uno las lineas horizontales a las verticales en el marco del cuadrille*/
      gotoxy(1,r1);
      printf("%c",195);
      gotoxy((cantcar*N+(N+1)),r1);
      printf("%c",180);
    }
/*formo las lineas verticales dentro del cuadrille*/
      for(c1=(cantcar+2);c1<=(cantcar*N+N);c1+=(cantcar+1)){
    for(r1=2;r1<=(N+N);r1++){
       gotoxy(c1,r1);
       cprintf("%c",179);
    }
    gotoxy(c1,1);
    printf("%c",194);
    gotoxy(c1,(N+(N+1)));
    printf("%c",193);
    /*armo la Å entre las lineas que se cruzan*/
    for(r2=3;r2<=(N+N);r2+=2){
       gotoxy(c1,r2);
       cprintf("%c",197);
    }
       }
    gotoxy(2,2);
    printf ("135");

    getch();
}


saludos

mjesun

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
Re: Realización De Cuadrícula.
« Respuesta #5 en: Jueves 23 de Agosto de 2007, 02:15 »
0
hola!

creo que quedaria mucho mas elegante si primero generases dos o tres arrays, en funcion de cantcar con el texto a postear. por ejemplo

STR1 = '|    |     |     |';
STR2 = '+---+--+---+';
STR3 = '---------------';

despues mediante un unico bucle, podrias irlos imprimiendo.. primero STR3, despues una combinación de STR1 y STR2, y finalmente STR3...

si te interesa la idea dimelo, y te la aclaro mas a fondo.

un saludo, miguel.

aarias

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Realización De Cuadrícula.
« Respuesta #6 en: Jueves 23 de Agosto de 2007, 16:12 »
0
Hola Miguel, claro que me interesa tu solucion del problema. Quizás me olvidé yo de aclarar, este "programilla" va a ser un procedimiento dentro de un sistema más grande, entonces la idea del cantcar es que sea un parámetro que me lo pasan desde el main, lo unico que hace esta constante es delimitar el tamaño máximo que entra en cada cuadrado, es decir cantcar = 1 entran cifras de 1 digito, cantcar=2 entran cifras de 2 digitos, etc, etc.
Por lo que hoy por hoy preciso esta constante, pero si se te ocurre de una mejor forma arriba me viene genial.

saludos   ,

Alvaro.

mjesun

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
Re: Realización De Cuadrícula.
« Respuesta #7 en: Jueves 23 de Agosto de 2007, 16:26 »
0
hola aarias,

suena a sudoku :lol:

a ver.. me explico mejor xq creo qe no lo he conseguido. supongamos que la rejilla es de 3 * 3. entonces, se definen 3 o 4 strings que contienen unas cadenas a repetir. por ejemplo, para la primera de todas:


unsigned char *str1[3 * (cantcar+1) + 1];

Código: Text
  1. str1[0] = 195;
  2. for (i = 1; i &#60; 3 * (cantcar+1) - 2; i++) {
  3.     if (i % cantcar) {
  4.        str[i] = 196;
  5.     } else {
  6.        str[i] = 197;
  7.     }
  8. }
  9. str1[i] = 180;
  10.  


algo asi...  no se si me he explicado... la cuestion es generar unos arrays de caracteres, que luego puedas imprimir uno detras de otro, seguidos. de hecho, se me acaba de ocurrir, que podrias implementar un código como ese a nivel general... es decir:

una funcion a la que tu le pases: el puntero al buffer, el primer carácter, el carácter intermedio y el caracter delimitador, y finalmente el último carácter. de esta manera, las tres líneas se generarían con una misma función.

creo que sigue siendo confuso, si no me explico bien dilo!! :argh:

un saludo :lol:, miguel