|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - lordford
26
« en: Miércoles 9 de Junio de 2004, 15:46 »
Hola: mira el concepto es muy trabajado en este "mundo", eso por lo que preguntas tiene varias maneras de ser interpretado, pueden decir que es una matriz, que es una tabla, que es un arreglo, etc... y todos esos criterios son validos desde el pto de vista que necesites. Mi criterio no es muy objetivo ni se trata de una generalizacion, te esplico algo, lo sgte: Realmente define a un apuntador a otro apuntador, es similar a decir: Se declara un apuntador al 1er caracter del string cadena. Ahora bien, el ** significa mucho para quien lo utiliza, estas creando un apuntador a otro apuntador que puede estar apuntando a otro..... Y es muy util, ya que significa que estas creando un "arreglo" de apuntadores, un arreglo en que cada elemento apunta o no a otra direccion de memoria que puede ser CUALQUIER COSA. El termino es un poco complicado, te pongo un ejemplo sencillo: // Ejemplo sencillo int a, b, c, d; int *aa, *bb, **cc, *dd = NULL; int ** matriz; aa = &a; bb = &b; cc = &c; matriz = new int*[4]; matiz[0] = aa; matiz[1] = bb; matiz[2] = cc; matiz[3] = dd; // Resto de codigo ... /* Estoy haciendo algo asi: aa->a, ba->b, cc->c, dd->NULL matriz[0]->aa->a matriz[1]->bb->b matriz[2]->cc->c matriz[3]->dd->NULL */ //Y asi cada uno puede apuntar a X direccion de MEMORIA
Solo es un ejemplo sencillo, alguien mas en la comunidad podra ayudarte con un concepto mas amplio, estoy seguro de eso, pero por ahora comienza pensando asi. Espero que te ayude !!!!!!!!! Salu2, LordFord
27
« en: Martes 8 de Junio de 2004, 18:47 »
Hola: lola2, mira, el trabajo con matrices es un standar y la mejor manera (no es general) en la que yo las implemento es haciendo 4 metodos fundamentales (aparte de los comunes...), estos son: // Aclaro que es una matriz de 2 dimensiones, codigo extensible a otros casos. // Para matrices dinamicas de apuntadores a Tipo, generica .... // Coloca "value" en [row, col] de myMatriz y retorna la nueva myMatriz Matriz* SetValue(Matriz* myMatriz, Tipo* value, int row, int col); // Retorna "value" en [row, col] de myMatriz Tipo* GetValue(Matriz* myMatriz, int row, int col); // Retorna TODA la fila "numberofRow" Tipo* GetRow(int numberofRow); // Retorna TODA la columna "numberofCol" Tipo* GetCol(int numberofCol); // Codigo ..... Matriz* Multiplicar(Matriz* myMatrizA, Matriz* myMatrizB, Matriz* myMatrizResult);
Asi es mas sencillo realizar las tareas de MULTIPLICACION, haciendo los ciclos anidados y obteniendo asi en cada momento la FILA y la COLUMNA necesaria para realizar la multiplicacion y obtener cada nuevo elemento de la matriz resultante. Espero que te sirva, y estudia mucho para este examen !!!!!!!! Salu2, LordFord
28
« en: Martes 8 de Junio de 2004, 04:00 »
Hola: intenta esto, la explicacion no la se, ya algun otro usuario la dara, la verdad es que no se por que no funciona, aqui te pongo un ejemplo, asi si lo hace. void __fastcall TForm1::Button1Click(TObject *Sender) { variable = 0; if (Edit1->Text == "op") { variable=1; Form2->Button1->Enabled = 1; } else { variable = 0; Form2->Button1->Enabled = 0; } Form2->ShowModal(); }
Salu2, LordFord
29
« en: Lunes 7 de Junio de 2004, 16:08 »
Hola: Asi es, exactamente como dice Jonathan, creo que realmente quieres que otros hagan tu " tarea", queremos ayudar a los demas, no queremos hacer que los demas se estanquen por no cometer errores y no aprender, tienes que esforzarte como todos y postear solo las dudas que hayas visto desde muchos angulos y no puedas resolver. AHI ESTA LA CLAVE DE ESTE FORUM, asi se logra crear la comunidad !!!!!!!!Salu2, LordFord
30
« en: Lunes 7 de Junio de 2004, 07:57 »
Hola: aqui les va el algoritmo de Dijkstra Algoritmo de Dijkstra Algoritmo que permite resolver el problema de los caminos mínimos con origen único. En el grafo el peso de todas las aristas es positivo. En el algoritmo se emplea una cola con prioridad.
La implementacion no es difisil, y es muy util, les propongo un seudocodigo Dijsktra( Grafo g, Vértice s) Para cada v que pertenece a V hacer d[v] = NULL d = 0 HacerColaPrioridad( p,V) Mientras no p.Vacia() u = p.Frente() // el menor valor p.Eliminar() Para cada v que pertenece a g.Adyacentes(u) si d[v] > d+w(u,v) d = d+w(u,v) p.DisminuirClave(v,d[v]) Espero que ayude. Salu2, LordFord
31
« en: Lunes 7 de Junio de 2004, 07:21 »
Hola: mira, una solucion seria utilizando la lista de la STL, declarandola para tipo String asi: // C++ Builder 6 #include <list.h> // Declaracion de la lista list<String>* mylist; // Inicializar mylist = new list<String>;
Asi podras almacenar Strings sin problemas, eliminar, adicionar, insertar en determinada posicion.... Y puedes implementar un metodo que determine primero en que posicion se debe insertar el String antes de hacerlo, o sea que la lista se ordene alfabeticamente ella sola, y sera mejor para trabajarlo en el fichero. Para ordenar puedes utilizar las funciones mas elementales de los Strings, por ejemplo: // C++ Builder 6 #include <string.h> // Dados 2 Strings String cad1 = "programa", cad2 = "programador"; // Ahora comparas int result = strcmp(cad1.c_str(), cad2.c_str()); // Luego pones el codigo.
Y asi comparas para ordenar alfabeticamente. EL algoritmo de insercion no es difisil, solo tienes un inconveniente, la STL se implemento para acceder a los elementos de las clases contenedoras a traves de objetos llamados "iteradores". Busca referencia sobre estos pues no es muy difisil utilizarlos. Si tienes dudas postea nuevamente. Salu2, LordFord
32
« en: Sábado 5 de Junio de 2004, 20:34 »
Hola: como ya he recomendado a muchos lo continuo haciendo, date un paseo por el siguiente enlace, es para mi uno de los mejores sitios para aprender y familiarizarse con C/C++, espero que te ayude y apresurate que tienes poco tiempo. Programacion en C/C++Salu2, LordFord
33
« en: Sábado 5 de Junio de 2004, 15:16 »
Hola: ya les envio el documento, la bibliografia es en ingles, ya que pense que retenia los de español, lamento la demora. Salu2, LordFord
34
« en: Martes 1 de Junio de 2004, 22:48 »
Hola: bueno, si te refieres a registros de datos diseñados por ti en clases o estructuras, pues puedes ir buscando info sobre ficheros, para leer y escribir se usan funciones como size_t fwrite( const void *ptr, size_t size, size_t n, FILE *stream) y size_t fread( void *ptr, size_t size, size_t n, FILE *stream). Dime si es esto lo que quieres y te dare mas elementos, de todas formas busca en la ayuda del Builder, esta muy claro. Salu2, LordFord
35
« en: Martes 1 de Junio de 2004, 22:15 »
Hola Devilcpc: realmente no se por que no sabes como hacer esto, mira, ya probe lo siguiente y trabaja OK, tengo 2 formuarios( F1, F2), en el .h de F2 declaro una variable de tipo int(variable) de visibilidad publica. Ahora incluyo en el .h de F1 el .h de F2. En F2 pongo un boton y un edit, en el OnClick del boton asigno el valor del edit a variable, luego cierro la F2 y al regresar a F1(esta tiene 2 botones, uno para mostrar la F2 y otro para mostrar el valor de variable luego de asignarlo en F2) en el OnCLick del 2do boton muestro un msg con el valor de variable. NO ME RESETEA EL VALOR DE variable. Aqui esta el codigo aproximado: // TODO ESTO EN LA F1 //En el .h de F1 #include "Unit2.h" //En el OnClick del 1er boton void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->ShowModal(); } //En el OnClick del 2do boton, solo ejecutar despues de ir a la F2 void __fastcall TForm1::Button2Click(TObject *Sender) { ShowMessage(IntToStr(Form2->variable)); } //TODO ESTO EN LA F2 //En el .h de F2, declaro la variable publica int variable; //En el OnClick del boton void __fastcall TForm2::Button1Click(TObject *Sender) { variable = Edit1->Text.ToInt(); ShowMessage(IntToStr(variable)); }
Y ya esta, espero que te sirva, aqui tienes el adjunto. Salu2, LordFord
36
« en: Martes 1 de Junio de 2004, 22:12 »
Hola Devilcpc: realmente no se por que no sabes como hacer esto, mira, ya probe lo siguiente y trabaja OK, tengo 2 formuarios( F1, F2), en el .h de F2 declaro una variable de tipo int(variable) de visibilidad publica. Ahora incluyo en el .h de F1 el .h de F2. En F2 pongo un boton y un edit, en el OnClick del boton asigno el valor del edit a variable, luego cierro la F2 y al regresar a F1(esta tiene 2 botones, uno para mostrar la F2 y otro para mostrar el valor de variable luego de asignarlo en F2) en el OnCLick del 2do boton muestro un msg con el valor de variable. NO ME RESETEA EL VALOR DE variable. Aqui esta el codigo aproximado: // TODO ESTO EN LA F1 //En el .h de F1 #include "Unit2.h" //En el OnClick del 1er boton void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->ShowModal(); } //En el OnClick del 2do boton, solo ejecutar despues de ir a la F2 void __fastcall TForm1::Button2Click(TObject *Sender) { ShowMessage(IntToStr(Form2->variable)); } //TODO ESTO EN LA F2 //En el .h de F2, declaro la variable publica int variable; //En el OnClick del boton void __fastcall TForm2::Button1Click(TObject *Sender) { variable = Edit1->Text.ToInt(); ShowMessage(IntToStr(variable)); }
Y ya esta, espero que te sirva, aqui tienes el adjunto.
37
« en: Lunes 24 de Mayo de 2004, 04:05 »
Hola : No eres muy explicito en lo que dices, pero el componente TSpeedButton puede que te resulte agradable, es para otro propoposito, pero si lo que quieres es que se vea plano, ese puede ser, ademas tiene una propiedad llamada Flat, que al ponerla en true te prodece un efecto agradable, puedes indagar sobre este componente. Salu2, LordFord
38
« en: Sábado 22 de Mayo de 2004, 23:09 »
Hola: el algoritmo no esta mal, aunque tiene detalle que luego te dire por razones de tiempo no te respondo, pero el problema se puede simplificar si usas una pila y un array auxiliar, luego comparas y ya esta !!!!! Mas o menos asi: entrar palabra, llenar la pila con los caracteres de la palabra, vaciar la pila y llenar el array auxiliar, comparar cadenas, retornar si es o no palindrome. Es solo eso, aunque se puede optimizar mas. Espero que te ayude Salu2, LordFord
39
« en: Sábado 22 de Mayo de 2004, 18:31 »
Hola: El trabajo con grafos es un poco complicado y muy util para resolver varios problemas, esta estructura de datos es escencial en la programacion, no la he estudiado a fondo pero si tengo unos tutoriales que te pueden ayudar, publica tu e-mail y los enviare pronto !!!!!!!! Salu2, LordFord
40
« en: Sábado 22 de Mayo de 2004, 18:23 »
Hola: Amigo scarlet, se que este foro no es para hacer que los demas trabajen por ti pero en estos dias estoy ocupado en la Universidad desarrollando un Simulador de Conduccion y el tiempo lo tengo super recortado como para indagar sobre el chat, serias tan amable de darme mas elementos sobre como trabajarlo ??? Si es posible me envias el codigo fuente a la sgte direccion [email:3uetpdmg]lordford@xasa.com[/email:3uetpdmg] Hey Nicokiki, me echas una mano tambien, ya sea por e-mail o por aca en el foro, espero su ayuda porque no dispongo de mucho tiempo para estudiar este tema!!!!!!!! Estoy muy agradecido por su ayuda !!!!!!!! Salu2, LordFord
41
« en: Viernes 21 de Mayo de 2004, 04:34 »
Ok, lo que pasaba era que no explicabas en tus mensajes que la lista era de elementos varios, asi si tienes que implementar una clase que se acerque a lo que deseas o puede ser una estructura, de todas formas espero que termines tu programa. Salu2, LordFord
42
« en: Viernes 21 de Mayo de 2004, 01:21 »
Hola: quiero hacer un chat en C++, alguien me dice como empezar ??? Salu2, LordFord
43
« en: Viernes 21 de Mayo de 2004, 00:51 »
Hola: Es sencillo amigo, no tienes que implementar nada, solo hacer esto: //En el .h #include <Time.h> //Luego en el OnClick o en un Timer o cualquier componente pones esto Edit1->Text = DateTimeToStr(Time()); //Puede ser que lo pongas en un Label u otro componente...
Eso es todo !!!!!!!!! Salu2, LordFord
44
« en: Viernes 21 de Mayo de 2004, 00:33 »
Hola: Puede ser que no entienda bien lo que preguntas pero puedes tener el form1 como el principal y pedir los datos en un form2 y pasar esos datos de forma muy sencilla asi: 1- incluyes en la Unit2 la Unit1 2- declaras de forma publica las variables que recibiran los datos de el 2do form si no los mostraras inmediatamente(es para almacenarlos y mostrarlos despues) 3- asignas los datos en el OnClick de un boton de la form2 asi: form1->Var1 = Edit1->Text; //con sus conversiones // y asi susecivamente
Espero que te ayude Salu2, LordFord
45
« en: Viernes 21 de Mayo de 2004, 00:20 »
Hola: hay una propiedad de los objetos que se llama Anchors qu hace que los objetos se " claven o fijen" en sus posiciones con respecto al limite de la aplicacion o del formulario, por defecto estan anclados al limite Superior(Top) y al Izquierdo(Left), por eso al cambiar el tamaño de la ventana ellos se mueven hasta mantener la misma distancia, si los anclas o fijas a los 4 limites tendras tu solucion. Salu2, LordFord
46
« en: Miércoles 19 de Mayo de 2004, 16:54 »
Hola Black Boy: esta muy lindo eso pero seria mas sencillo si solo inlcuyes la libreria Time.h y en el componente que desees asignas el resultado [es AnsiString] de esta funcion DateTimeToStr(Time()) Asi obtienes la fecha y la hora juntitos !!!!!! Salu2, LordFord
47
« en: Miércoles 19 de Mayo de 2004, 16:33 »
Hola : mira, el componente TList puede que no sea el mejor, pero busca bien el contenido de la STL (Standard Template Library), aqui tienes todo tipo de algoritmos y clases de las que te hable, TODAS son genericas y las puedes inicializar para cualquier tipo de datos, inclusive de forma anidada, un ejemplo de lo que quieres con la pila (stack) seria asi: stack<TSpeedButton*> * myStack = new stack<TSpeedButton*> ; Asi estarias creando una pila de elementos TSeeedButton*, busca en la ayuda que biene muy claro, estas clases y algoritmos son muy utiles a la hora de programar !!!!!!!! Por ejemplo estas clases estan en la STL: vector, list, deque, set, multiset, bitset, stack, queue, priority queue Todas GENERICAS ..... Salu2, LordFord
48
« en: Martes 18 de Mayo de 2004, 22:00 »
Hola a todos: quisiera saber donde puedo encontrar informacion sobre las aplicaciones exclusivas, digo esas que mientras esten activas como proceso no permitan la ejecucion de otro programa, es necesario para mi proximo proyecto, quizas sepan de algun sitio o alguna referencia sobre el tema. Espero que me ayuden !!!! Salu2, LordFord
49
« en: Martes 18 de Mayo de 2004, 20:33 »
Hola: Es uno de los mejores enlaces que aqui se citan, de veras que lo tienes todo en http://c.conclese.netY para la programacion visual hay unos buenos cursos en Programacion FacilEspero que te sirva y gracias por escoger el camino del saber, buena suerte !!!!! Salu2, LordFord
50
« en: Martes 18 de Mayo de 2004, 20:15 »
Hola amigo : Mira, no es necesario ser "novato" para eso, ya hace tiempo que programo y aunque no la utilizo mucho porque me gusta definir mis estructuras y clases se que son importantes estas cosas, el compilador C++ Builder [trabajo la version 6] tiene una biblioteca estandar con miles de algoritmos y procedimientos bien diseñados por profesionales que pueden ayudarte a resolver miles de problemas, algunos muchos que se han posteado aqui, pero una de las cosas fundamentales es que se incluyen tambien las definiciones de las estructuras de datos mas utilizadas en cualquier lenguaje de programacion [entre ellas estan la pila, cola, lista y ademas tambien los arboles] en todas sus variantes, estas estan en la llamada stl.h [o la .hpp, cada una tiene una Unit independiente ->Stack.h, List.h .....] segun el caso, puedes buscar en la ayuda mas informacion sobre eso, es importantisimo este tema, te lo aseguro !!!!!!!! Salu2, LordFord
|
|
|