Autor Tema: Función - Situa posición - imprime valor con formato - Vector  (Leído 6577 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #15 en: 01 de Mayo de 2009, 18:16:01 »
hola Amigo MigSantiago
arib
si yo quisiera tipificar un comportamiento.

si tenemos:

tenemos una variable "int n"que puede tomar valores de 1 a 8

si n = 1 entonces el vector a pasar es nenup1[] //vector
si n = 2 entonces el vector a pasar es nenup2[] //vector
si n = 3 entonces el vector a pasar es nenup3[] //vector
si n = 4 entonces el vector a pasar es nenup4[] //vector
si n = 5 entonces el vector a pasar es nenup5[] //vector
..
..

esto podria hacerlo con un switch pero dentro del case..
pregunta?
deberia llamar a la funcion de forma manual

case 1
pantalla(int col,int lin,int posA,int posB,char menup1[]);
breack;
case 2
pantalla(int col,int lin,int posA,int posB,char menup2[]);
break
case 3
pantalla(int col,int lin,int posA,int posB,char menup3[]);
break
...
..

cuando

void pantalla(int col,int lin,int posA,int posB,char menup1[])

Amigo santiago,
Algun consejillo

intento indizar vectores desde dentro de un vector, creo que se llama asi,
sigo dandolo vueltas

un saludo,Amigo MigSantiago.


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #16 en: 01 de Mayo de 2009, 18:51:47 »
A ver si esto te convence.

Código: [Seleccionar]
//Declaración de las cadenas globales
const char menup0[][]={"uno","dos","tres","cuatro","cinco","seis"};
const char menup1[][]={"unoA","dosA","tresA","cuatroA","cincoA","seisA"};
const char menup2[][]={"unoB","dosB","tresB","cuatroB","cincoB","seisB"};

//Prototipo de la función
void ImprimeLCD(int x, int y, int menu, int cadena)
{
lcd_gotoxy(x,y);
switch(menu)
    {
    case 0:
        printf(lcd_putc, "%s ", menup0[cadena]);
        break;
    case 1:
        printf(lcd_putc, "%s ", menup1[cadena]);
        break;
    case 2:
        printf(lcd_putc, "%s ", menup2[cadena]);
        break;
    }
}

//Función principal
void main(void)
{
int x=0;
int y=0;
int Menu=2;
int Cadena=3;

ImprimeLCD(x,y,Menu,Cadena);
}

A la salida de la LCD se verá:

Código: [Seleccionar]
cuatroB

Otro ejemplo de uso:

Código: [Seleccionar]
ImprimeLCD(0,0,0,0);

Entregará:

Código: [Seleccionar]
uno

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #17 en: 01 de Mayo de 2009, 22:29:46 »
Hola Amigo MigSantiago

mire el programa y aun no me convence, tengo claro lo que quiero hacer pero no se como llevarlo a cabo,
he pensado que la solucion me la podia dar el uso de un poliedro, sería como una matriz, pero con la diferencia que cada submenu sería una dimesion más:



me explico : p1 es el menu

p1
1 -> 1 2 3 4 5 6 ->sub opciones de p1
2 -> 1 2 3 4 5 6
3 -> 1 2 3 4 5 6
4 -> 1 2 3 4 5 6

5 -> 1 2 3 4 5 6 ->sub opciones de la opcion 5 del menu p1
        | | | | | | |
        vv v v vvv
        1
        2
        3
        4
        |
         L-> sub menus de la opcion 1 del sub menu del menu 5  ,

   
en este video se ve lo que hace el menu

http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=25607.0;attach=9050

aqui solo se muestra la pantalla 1
« Última modificación: 02 de Mayo de 2009, 21:10:59 por pajaro »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #18 en: 02 de Mayo de 2009, 11:45:36 »
El programa hace exactamente lo que quieres. Debes pedir en 'menu' el menú principal y en 'cadena' la subopción del menú. Estúdialo de nuevo.

Solo falta que declares una matriz de 3 dimensiones: menú, submenú, submenú del submenú.

El video que adjuntas está corrupto.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #19 en: 02 de Mayo de 2009, 16:49:29 »
Bueno, al querer descomprimir el archivo de 68.8kB, Winrar me dice:

!   C:\Documents and Settings\SanLink\Escritorio\lcd_menu.rar: Invalid or corrupt authenticity information

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #20 en: 02 de Mayo de 2009, 17:02:18 »
Hola Amigo MigSantiago

Puedes intentarlo ahora lo modifique, creo que no te dejaba por no tener la misma version de licencia del winrar.

Un saludo, MigSantiago.
« Última modificación: 02 de Mayo de 2009, 21:13:40 por pajaro »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #22 en: 02 de Mayo de 2009, 21:26:23 »
Hola Amigo MigSantiago

No habia caido, que cada vez que modificas lo que subes, tambien se modifica el enlace,
ahora si funciona o eso creo yo, yo lo probe, y me funciona, dime y me cuentas.

aprovecho el mensaje para hacer una pregunta ¿para contar los elementos de un vector?

valdria el STRLEN(), estube mirando la ayuda del CCs pero no me convence,

se podria hacer un for junto con un break() o un exit(),
pero se necesitaria una refencia de terminacion.

Si al vector[]={"1.menu\0","2.menu\0","3.menu\0","4.menu\0"}
podria usar la funcion
una funcion que me contase "\0"


no encuentro el punto de relacion


Un ayudita.

Un saludo, MigSantiago.


« Última modificación: 02 de Mayo de 2009, 21:56:54 por pajaro »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #23 en: 02 de Mayo de 2009, 23:50:30 »
strlen() sirve para contar caracteres hasta encontrar un null char en una cadena. No sirve para contar elementos de un arreglo.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #24 en: 03 de Mayo de 2009, 10:26:25 »
hola Amigos

MigSantiago estube ojenado tu ejemplo el de la respuesta 16 y si yo quiero utilizar mi funcion, necesitaria usar un switch con el cual pudiera elegir el vector con el cual operar

////////////////////////////////////////funcion de muestra de pantalla////////////////////////
..
..
for(pos=col;pos<col+lin;pos++)                ///limita las lineas a mostrar
          {
           lcd_gotoxy(posA,posB);                           /// Situa menu 3,posb(1,2,3,4)
           printf(lcd_putc,"%s",menup1[pos-1]);        ///muestra mirecion de menu
           posB=posB+1;                                        ///inc. linea
           if(posB>lin){posB=1;}                             ///limita linea
          }


////////////////////////////////////////////////////////////////////////////////////////////

la linea en negrita tendria que cambiarla con una llamada a una funcion de selecion de menu

///////////////////////////////////////////// funcion selecion del menu ///////////////////////////////////////////////
...
..

switch(menu)
    {
    case 0:
        printf(lcd_putc, "%s ", menup0[cadena]);
        break;
    case 1:
        printf(lcd_putc, "%s ", menup1[cadena]);
        break;
    case 2:
        printf(lcd_putc, "%s ", menup2[cadena]);
        break;
    }

////////////////////////////////////////////////////////////////////////////////////////////

y despues volver a retornar al caso anteiror, estro comeria muchos recursos

seria mejor matrices multidimensinales.
matriz [ x ] [y]..[z]

lo malo biene al definirlas, mas bien a inicializarlas.

inicializacion de un vector:

vector[6][7]={"1.menu1","2.menu2","3.menu3","4.menu4","5.menu5","6.menu6"};

seria correcto?

o en realidad seria un matriz[6][7] de dos dimensiones y se deberia de ver asi:
matriz de [filas][columnas] en este caso 6 filas y 1 columna. y en vez de ser [6][7], seria [6][1]

imagino que dependera como definas el dato

   vector[6][7]={"1.menu1",
                         "2.menu2",
                         "3.menu3",
                         "4.menu4",
                         "5.menu5",
                         "6.menu6"};


estube mirando por la red:

http://www.zator.com/Cpp/E4_3_6.htm
http://www.zator.com/Cpp/E4_3_7.htm
http://www.ulpgc.es/otros/tutoriales/mtutor/mt2d.html
http://secciondeprogramacion.blogspot.com/2007/09/lenguaje-de-alto-nivel.html
http://profeblog.es/blog/alfredo/2008/05/10/arrays-bidimensionales-y-multimensionales-en-c/

por Dios, un poco de luz, que alguien me saque de dudas.










Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #25 en: 03 de Mayo de 2009, 11:26:37 »
Deberías estudiar más el lenguaje C.

Declara el vector así:

Código: [Seleccionar]
vector[][]={"1.menu1","2.menu2","3.menu3","4.menu4","5.menu5","6.menu6"};
En el tutorial claramente comenté que el compilador cuenta los elementos de la cadena y su null char y les da tamaño automáticamente.

Y los siguientes códigos son idénticos. No importa si están separados con líneas.

Código: [Seleccionar]
vector[][]={"1.menu1","2.menu2","3.menu3","4.menu4","5.menu5","6.menu6"};
Código: [Seleccionar]
   vector[][]={"1.menu1",
                         "2.menu2",
                         "3.menu3",
                         "4.menu4",
                         "5.menu5",
                         "6.menu6"};

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #26 en: 03 de Mayo de 2009, 11:45:52 »
Hola MigSantiago

vector[][],

¿Seria un vector o una matriz?


Un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #27 en: 03 de Mayo de 2009, 11:47:12 »
Es un arreglo de 2 dimensiones. El tamaño dependerá de lo que escribas después del =

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #28 en: 03 de Mayo de 2009, 14:38:15 »
hola MigSantiago

Podria echarle un vistacico ha este, programica:

http://www.todopic.com.ar/foros/index.php?topic=25607.msg211448#msg211448

alguna recomendacion.

Un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Función - Situa posición - imprime valor con formato - Vector
« Respuesta #29 en: 03 de Mayo de 2009, 15:06:49 »
Código: [Seleccionar]
pantalla(col,lin,posA,posB,menup1[]);
menup1[] no es una variable. Es una declaración de variable que está incorrectamente usada ahí.

Debes poner algo entre los corchetes: menup1[5] por ejemplo.