• Martes 16 de Abril de 2024, 19:16

Mostrar Mensajes

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 - alexg88

Páginas: [1] 2
1
Java / Re:Comportamiento extraño de un Applet :O
« en: Martes 20 de Diciembre de 2011, 14:56 »
No sé que habrás hecho porque a mi me funciona como se espera.

Saludos.

2
C/C++ / Re:Motrar La Densidad Mayor y Menor
« en: Viernes 16 de Diciembre de 2011, 18:45 »
La verdad es que este foro está muerto. Yo no suelo visitarlo porque no suele haber muchas preguntas y las veces que contestaba a alguien nunca recibía contestación de si le había servido o no.

Sin querer hacer spam ni nada de eso, te recomiendo que visites forosdelweb, en donde suelen responderte mucho más rápido y hay más gente.

3
C/C++ / Re:Problema con punteros el O.S. cierra el programa
« en: Domingo 18 de Septiembre de 2011, 21:36 »
Aunque seguramente sea muy tarde, dejo la solución a los problemas:

Código: C++
  1. //#include <stdio.h>
  2. //#include <string.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. #define INTENTOS 3
  8.  
  9. int** reservaMemoria(int fil,int col){
  10.  
  11.         int **p;
  12.     p = new int*[fil];
  13.     for(int n=0;n<fil;n++){
  14.         p[n] = new int[col];
  15.     }
  16.  
  17.         return p;
  18. }
  19.  
  20. void ingresoMatriz(int **&A,int **&B,int &filA,int &colA,int &filB,int &colB){
  21.  
  22.         int n;int m;
  23.  
  24.         cout<<"Ingrese filas de A"<<endl;
  25.         cin>>filA;
  26.         cout<<"Ingrese columnas de A"<<endl;
  27.         cin>>colA;
  28.         int datos;
  29.         A = reservaMemoria(filA,colA);
  30.         for(n=0;n<filA;n++){
  31.                 for(m=0;m<colA;m++){
  32.                                 cout<<"ingrese datos matriz A["<<n+1<<","<<m+1<<"]"<<endl;
  33.                                 cin>>datos;
  34.                                 A[n][m] = datos;
  35.  
  36.                 }
  37.         }
  38.         for(int n=0;n<filA;n++){
  39.                                  cout<<"  "<<endl;
  40.                                  for(int m=0;m<colA;m++){
  41.                                         cout<<A[n][m]<<"  ";
  42.  
  43.                                  }
  44.                                  cout<<"  "<<endl;
  45.                 }
  46.             cout<<" "<<endl;
  47.                 cout<<"Ingrese filas de B"<<endl;
  48.                 cin>>filB;
  49.                 cout<<"Ingrese columnas de B"<<endl;
  50.                 cin>>colB;
  51.                 B = reservaMemoria(filB,colB);
  52.             for(n=0;n<filB;n++){
  53.                 for(m=0;m<colB;m++){
  54.                                 cout<<"ingrese datos matriz B["<<n+1<<","<<m+1<<"]"<<endl;
  55.                                 cin>>B[n][m];
  56.  
  57.                 }
  58.  
  59.         }
  60.         for(int n=0;n<filB;n++){
  61.                                  cout<<"  "<<endl;
  62.                                  for(int m=0;m<colB;m++){
  63.                                         cout<<B[n][m]<<"  ";
  64.  
  65.                                  }
  66.                                  cout<<"  "<<endl;
  67.  
  68.         }
  69.         cout<<" "<<endl;
  70.  
  71.  
  72.  
  73.  
  74. }
  75.  
  76. void productoMatriz(int **A,int **B,int **C,int filA,int colA,int filB,int colB){
  77.  
  78.                  int acumulador;
  79.         C = reservaMemoria(filA,colB);
  80.                  if(filB == colA){
  81.                          for(int n=0;n<filA;n++){
  82.                                  cout<<"Generando producto matricial..."<<endl;
  83.                                  for(int k=0;k<colB;k++){
  84.                                          C[n][k]=0;
  85.                                          acumulador=0;
  86.                                          for(int m=0;m<filB;m++){//aca seria el problema !!
  87.                                                  acumulador = ((A[n][m]) * (B[m][k]));
  88.                                                  C[n][k] = acumulador + C[n][k];
  89.  
  90.                                          }
  91.  
  92.                                  }
  93.  
  94.                          }
  95.                          cout<<"Fin de Producto Matricial"<<endl;
  96.  
  97.                  }else{
  98.                          cout<<"El producto de matrices no es valido,dado que el numero de filas de B es distinto al numero de columnas de A"<<endl;
  99.                          return;
  100.                  }
  101.  
  102.  
  103.  }
  104.  
  105.  
  106. void menu(){
  107.                  int i=-1;int filA,colA,filB,colB;
  108.                  int **A = NULL;int **B = NULL;int **C = NULL;
  109.                  while(i!=0){
  110.                              cout<<"***********MENU***********"<<endl;
  111.                                  cout<<"*1:Ingreso de datos manualmente******"<<endl;
  112.                                  cout<<"*2:Ingreso de datos aleatorios*******"<<endl;
  113.                                  cout<<"*3:Producto Matricial****************"<<endl;
  114.                                  cout<<"*4:Mostrar Resultado*****************"<<endl;
  115.                                  cout<<"*0:Salir*****************************"<<endl;
  116.                                  cin>>i;
  117.                                  switch(i){
  118.  
  119.                                          case 1:ingresoMatriz(A,B,filA,colA,filB,colB);break;
  120.                                          //case 2:ingresoAleatorio(A,B,maxColA,maxColB,maxFilA,maxFilB);break;
  121.                                          case 3:productoMatriz(A,B,C,filA,colA,filB,colB);break;
  122.                                          //case 4:mostrarResultado(C,colA,filB);break;
  123.  
  124.                                  }
  125.  
  126.                  }
  127.                  cout<<"Bye!!"<<endl;
  128.  
  129.  }
  130.  
  131.  
  132. int main(){
  133.         menu();
  134. }
  135.  
  136.  

4
SQL Server / Re: Necesito trigger
« en: Sábado 11 de Junio de 2011, 15:53 »
Tienes que dar más información sobre las tablas y como están organizadas y sobre que campos quieres realizar el trigger.

Luego habría que ver si lo que necesitas es un trigger o vale con un check.

5
C/C++ / Re: Manejo de memoria con arreglos dinamicos
« en: Jueves 2 de Junio de 2011, 12:27 »
Tienes que estar leyendo muchísimos puntos para estar quedándote sin memoria.

Si fuese este el caso, tienes que comprobar que al asignar memoria mediante malloc o new (si es en C++), la asignación de memoria se esté produciendo, porque si no estarías intentando acceder a una memoria que no has reservado.

6
Java / Re: seleccion recursiva
« en: Martes 24 de Mayo de 2011, 20:57 »
La próxima vez pon el código entre las etiquetas de código.

El problema que tienes es que siempre le pasas el array desde el inicio hasta la posición n-1
y guardas el mínimo en la posición 0, y por eso sólo se te ordena un número.

Lo mejor es que utilices el máximo.

Código: Java
  1.  
  2. public static int Seleccion(int v[], int n){
  3. int i, maximo,l;
  4. if (n>=1) {
  5. maximo=0;
  6. for(i=1;i<n;i++)
  7.  if(v[i]>v[maximo])
  8.   maximo=i;
  9. i=v[n-1];
  10. v[n-1]=v[maximo];
  11. v[maximo]=i;
  12.  
  13.  
  14. return  Seleccion(v,n-1);
  15. }else{
  16. return 0;
  17. }
  18. }
  19.  
  20.  

7
C/C++ / Re: Problemas con tabla hash
« en: Miércoles 18 de Mayo de 2011, 13:05 »
La función localizar no debería devolver un puntero a un elemento, sino un  char *.

Luego, para comparar cadenas no puedes usar el operador == ni el != (eso compara direcciones de memoria en el caso de cadenas), sino la función strcmp.

Te paso el código corregido:

Código: C
  1.  
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <math.h>
  7. #define R 0.618034
  8. #define M 1024
  9.  
  10. //_______Estructuras de Datos____________//
  11. struct TipoTraduccion
  12. {
  13.     char espanol[20];
  14.     char ingles[20];
  15. };
  16. typedef struct TipoTraduccion Traduccion;
  17.  
  18. struct TipoElemento
  19. {
  20.     Traduccion traduccion;
  21.     struct TipoElemento *sgte;
  22. };
  23. typedef struct TipoElemento Elemento;
  24.  
  25. struct TipoTabla
  26. {
  27.    
  28.     Elemento* tabla[M];
  29.     int numElementos;
  30. };
  31. typedef struct TipoTabla TablaDispersa;
  32. //----------------------------------------//
  33. //_______Prototipos de funciones_________//
  34. long transformaClave(const char* clave);
  35. int dispersion(long x);
  36. void crearTabla(TablaDispersa* t);
  37. Elemento* crearNodo(Traduccion t);
  38. void crearTraduccion (TablaDispersa* t,Traduccion r);
  39. char *localizar(TablaDispersa t, char spanish[20]);
  40. //---------------------------------------//
  41. //______Funcion Principal(Main)__________//
  42. int main(int argc, char **argv)
  43. {
  44.     Traduccion trad ;
  45.     TablaDispersa t;
  46.     crearTabla(&t);
  47.     int k=0;
  48.     while( k!= 2011)
  49.     {
  50.        
  51.         printf("nt  1.-  insertar traduccion");
  52.         printf("nt  2.-  buscar palabra");
  53.         printf("nt  3.-  Eliminar ");             /*Imprime el menu de opciones*/
  54.         printf("nntEsperando entrada del usuario >>> ");
  55.         scanf("%d",&k);
  56.         switch( k )
  57.         {
  58.             case 1:
  59.                 puts("Ingresa palabra en español");
  60.                 scanf("%s",trad.espanol);
  61.                 puts("Ingresa traduccion");
  62.                 scanf("%s",trad.ingles);
  63.                 crearTraduccion(&t,trad);
  64.                 break;
  65.             case 2:
  66.                 puts("Ingresa la palabra a traducir");
  67.                 scanf("%s",trad.espanol);
  68.                 printf("%s",localizar(t,trad.espanol));
  69.                
  70.                  break;
  71.            
  72.  
  73.             default:
  74.                  printf("nntLa opcion es incorrecta. Seleccione otra opcion...");
  75.                  getchar();
  76.                  break;
  77.              }
  78.         }
  79.     return 0;
  80. }
  81. //---------------------------------------//
  82.  
  83. //__________Funciones____________________//}
  84.  
  85. long transformaClave(const char* clave)
  86. {
  87.     int j;
  88.     long d;
  89.    
  90.     d=0;
  91.     for(j=0;j<strlen(clave);j++)
  92.     {
  93.         d =  d * 27 + clave[j];
  94.     }
  95.     if (d < 0){
  96.         d=-d;
  97.     }
  98.     return d;
  99. }
  100. int dispersion (long x)
  101. {
  102.     double t;
  103.     int v;
  104.     t=R * x - floor(R * x);
  105.     v = (int)M * t;
  106.     return v;
  107. }
  108. void crearTabla(TablaDispersa* t)
  109. {
  110.     for(int i=0; i<M ;i++)
  111.         t->tabla[i] = NULL;
  112.     t-> numElementos = 0;
  113.    
  114. }
  115. Elemento* crearNodo(Traduccion t)
  116. {
  117.     Elemento* n;
  118.     n = (Elemento*)malloc(sizeof(Elemento));
  119.     n-> traduccion = t;
  120.     n-> sgte = NULL;
  121.     return n;
  122. }
  123. void crearTraduccion (TablaDispersa* t,Traduccion r)
  124. {
  125.     int posicion;
  126.     Elemento* nuevo;
  127.     posicion = dispersion(transformaClave(r.espanol));
  128.     nuevo = crearNodo(r);
  129.     nuevo -> sgte = t -> tabla[posicion];
  130.     t -> tabla[posicion] = nuevo;
  131.     t -> numElementos++;
  132. }
  133. char *localizar(TablaDispersa t, char spanish[20])
  134. {
  135.    
  136.     Elemento* p = NULL;
  137.     int posicion;
  138.     posicion = dispersion(transformaClave(spanish));
  139.     if (t.tabla[posicion])
  140.     {
  141.         p = t.tabla[posicion];
  142.         while(strcmp(p->traduccion.espanol,spanish)!=0 && (p -> sgte != NULL ))
  143.             p = p -> sgte;
  144.         if(strcmp(p->traduccion.espanol,spanish)!=0)
  145.                 p = NULL;
  146.     }
  147.     return p->traduccion.ingles;
  148. }
  149.  
  150.  
  151.  
  152.  

8
C/C++ / Re: Problema con arrays, q error tengo??
« en: Martes 17 de Mayo de 2011, 21:40 »
Los arrays en C++ empiezan con índice 0 y terminan en el índice = longitud_array -1.

Por eso, como pones el bucle desde 1 a 10, se te sale del array y te salen esos datos extraños.

9
C/C++ / Re: Traductor de idiomas en C
« en: Domingo 15 de Mayo de 2011, 21:21 »
Si quieres que los datos permanezcan vas a tener que usar obligatoriamente ficheros. También podrías usar una base de datos, pero supongo que es muy avanzado para lo que pretendes hacer.

10
C# / Re: Insertar imagen en C# con listas
« en: Martes 10 de Mayo de 2011, 00:29 »
Tienes un pequeño error en lo que has puesto. El método FromImage devuelve un objeto de tipo Image, no un String.

Sería así:

 
Código: C#
  1. public void BtnSiguiente_Click(bla,bla,bla)
  2. {
  3. String ruta = "Documents....imagen";
  4. Image imagen = Image.FromFile(ruta);
  5.  
  6. //mostrar la imagen en el picturebox cada que se hace clic en algun boton "siguiente"
  7. this.pictureBox1.Image = imagen;
  8. }
  9.  

11
JSP/Servlets / Re: Guardar en base de datos tabla html dinámica
« en: Lunes 9 de Mayo de 2011, 23:08 »
Para enviar datos a un servidor sólo hay dos formas: con los formularios y con ajax.

Seguramente te interesa más ajax para lo que quieres hacer.

12
C/C++ / Re: [C] Estructuras y archivos binarios
« en: Lunes 9 de Mayo de 2011, 00:09 »
Primero tienes que hacer el array rut un caracter más grande para que puedas poner el .

Código: C
  1. struct persona {
  2.  char rut[12];
  3.  int edad;
  4.  char nombre[255];
  5.  };
  6.  

Segundo, las lecturas:
Código: C
  1.  
  2. printf("Rut de la personan");
  3.         scanf("%s",data_save.rut);
  4.         printf("Edad de la personan");
  5.         scanf("%d", &data_save.edad);
  6.         printf("Nombre de la personan");
  7.         scanf("%s",data_save.nombre);
  8.  
  9.  

Ya se porque te falla el feof. Resulta que para que feof te diga si el fichero ha terminado primero tienes que leer y luego realizar feof. Por eso te entra dos veces.
Tendrías que hacerlo así:
Código: C
  1.  
  2. void insert_into_table()
  3. {
  4.     void insert_into_table()
  5. {
  6.     int menu2_on = 1;
  7.  
  8.     struct persona avance;
  9.  
  10.     FILE *save_file;
  11.  
  12.     save_file = fopen ("archivo.dat", "w+b");
  13.  
  14.     fread (&avance, sizeof(struct persona), 1, save_file);
  15.  
  16.     if (avance.edad == 0)
  17.         rewind(save_file);
  18.  
  19.     do {
  20.         fread (&avance, sizeof(struct persona), 1, save_file);
  21.         do {
  22.             fread (&avance, sizeof(struct persona), 1, save_file);
  23.         } while (!feof(save_file));
  24.  
  25.         struct persona data_save;
  26.  
  27.         printf("Rut de la personan");
  28.         scanf("%s",data_save.rut);
  29.         printf("Edad de la personan");
  30.         scanf("%d", &data_save.edad);
  31.         printf("Nombre de la personan");
  32.         scanf("%s",data_save.nombre);
  33.        
  34.         fwrite (&data_save , 1 , sizeof(struct persona) , save_file);
  35.  
  36.         printf("¿Desea agregar otra tupla? (1 Si, 0 No)n");
  37.         scanf("%d", &menu2_on);
  38.  
  39.     } while (menu2_on == 1);
  40.  
  41.     fclose(save_file);
  42.  
  43.     struct persona junior;
  44.     FILE  *test_file;
  45.    
  46.     test_file = fopen ("archivo.dat", "rb");
  47.     if (test_file==NULL)
  48.         printf ("No se pudo abrir el archivon");
  49.  
  50.     printf("RuttEdadtNombren");
  51.     printf("--------------------------------------------------------------------n");  
  52.     fread (&junior, sizeof(struct persona), 1, save_file);
  53.     while (!feof(test_file))
  54.     {  
  55.         printf("%st%dt%sn", junior.rut, junior.edad, junior.nombre);        
  56.         fread (&junior, sizeof(struct persona), 1, test_file);      
  57.     }
  58. }
  59.  

13
Visual C++ / Re: Tipo de Proyecto para realizar programa educativo
« en: Lunes 9 de Mayo de 2011, 00:02 »
Lo mejor que puedes hacer es usar los paneles (clase Windows.Forms.Panel), al que le puedes asignar cualquier otro componente (botones, listas, etc) y tener varios paneles creados en el mismo formulario con las distintas presentaciones.

Luego cuando quieras cambiar de uno a otro sólo tienes que ocultar uno y mostrar el otro.

14
C/C++ / Re: recuperar consulta resultado de row en un array char
« en: Domingo 8 de Mayo de 2011, 23:47 »
Creo que tu problema está que supones que te va a devolver 14 columnas el resultado. Para saber el nº de columnas que va a devolver la consulta se usa mysql_num_fields.

Código: C++
  1.  
  2.  
  3. string consultaPartida= "Select * from tiradasjugadorespartida where TiradaPartida="+p+" and JugPartida="+jug+" and Tirada="+t+" and NumBola="+b+";";
  4. char consPartida[100];
  5. int k=0;
  6. strcpy(consPartida,consultaPartida.c_str());
  7. cout<<consPartida<<endl;
  8.  
  9. mysql_query(myData,consPartida);
  10.  res=mysql_store_result(myData);
  11. int num_fields = mysql_num_fields(res);
  12.  row = mysql_fetch_row(res);
  13. k = (int) mysql_num_rows(res);
  14. cout<<k<<endl;
  15. char posiciones[10]=B;
  16. int j=0;
  17. for(i=4;i<num_fields;i++){ //solo con los datos de los bolos
  18.   strcat(posiciones,row[i]); //aqui se para la ejecucion
  19. }
  20.  
  21. cout<<posiciones<<endl;
  22.  mysql_free_result(res);
  23.  
  24.  

15
C/C++ / Re: [C] Estructuras y archivos binarios
« en: Domingo 8 de Mayo de 2011, 23:39 »
El problema del 4 que aparece es porque no lees bien las cadenas.

Una cadena en C se representa como un conjunto de caracteres terminado con el caracter .

Tú al leer de la forma que lo haces ( scanf("%*c%[^n]",data_save.rut);) no le estás poniendo el al final y por eso al imprimir con %s te da problemas porque no sabe donde finaliza la cadena.

Para leer cadenas se utiliza %s también.

Sobre el segundo problema, da porque la función feof no te devuelve true cuando debería (estoy revisando porque).

Otra cosa, la línea 37 (en la función insert_into_table), abres mal el fichero (da un pedazo de error).

Incorrecto:
 
Código: C
  1. save_file = fopen ("archivo.dat", "r+wb");
  2.  

Correcto (así abres para lectura y escritura):
 
Código: C
  1. save_file = fopen ("archivo.dat", "w+b");
  2.  

16
C# / Re: Ordenar listas - help
« en: Domingo 8 de Mayo de 2011, 00:03 »
He cambiado de parámetros en la segunda versión, en la primera está igual que el tuyo pero es más correcta la segunda.

17
Visual C++ / Re: Tipo de Proyecto para realizar programa educativo
« en: Sábado 7 de Mayo de 2011, 23:43 »
Lo ideal es usar varias ventanas sí, aunque se pueden cambiar los elementos de la ventana en tiempo de ejecución, no es lo recomendable.

Lo de la pantalla de presentación se puede hacer pero tendrás que utilizar temporizadores para que, por ejemplo, a los 10 segundos te cambie a la ventana principal.

Las opciones no se hacen con switch. Tienes que pensar en como están hechos los programas gráficos. Las opciones las puedes presentar de múltiples maneras: mediante el menú superior, en botones dentro de la ventana, en listas, etc.

18
Visual C++ / Re: Tipo de Proyecto para realizar programa educativo
« en: Sábado 7 de Mayo de 2011, 22:06 »
La forma de programar es distinta, tanto porque C++ es orientado a objetos (aunque se puede programar como en C) como porque estás utilizando interfaces gráficas.

Esto supone que no es como un programa normal, en el que las acciones vienen dadas de manera secuencial (por supuesto, se puede dirigir el flujo de ejecución pero de manera más limitada). Es una programación orientada a eventos, es decir, si pulsas un botón ocurre algo, si escribes algo en una caja de texto puedes controlar lo que escribe el usuario mediante el evento que se producto cuando el usuario escribe algo, etc.

19
C# / Re: Ordenar listas - help
« en: Sábado 7 de Mayo de 2011, 22:02 »
comparar es una función especial (llamada delegado) que se le pasa al método Sort para realizar un ordenación personalizada. La función en este caso
es la que te pongo primera. No se que problema te da, a mi me va perfecto tal cual está.

Te paso una mejora en la que se le añade al método Order la función de comparación, para que no haya efectos laterales (el pasar el método comparar dentro del método Order no es buena programación, es mejor pasarle como parámetro el método).

Código: C#
  1.  
  2. using System;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections.Generic;
  6.  
  7. namespace PruebasCSharp
  8. {
  9.  
  10.  
  11.     class Program
  12.     {
  13.  
  14.          
  15.         public static int comparar(string[] x, string[] y)
  16.         {
  17.             int num1, num2;
  18.  
  19.             num1 = Convert.ToInt32(x[0]);
  20.             num2 = Convert.ToInt32(y[0]);
  21.  
  22.             if (num1 > num2)
  23.                 return 1;
  24.             else
  25.                 if (num1 < num2)
  26.                     return -1;
  27.                 else return 0;
  28.          
  29.         }
  30.  
  31.         public static void Order(ref List<string> lMulti, ref List<string> lNivel, Comparison<string[]> comparar)
  32.         {
  33.             List<string[]> listacomb = new List<string[]>(lMulti.Count);
  34.  
  35.             for(int i=0;i<listacomb.Capacity;i++)
  36.             {
  37.                 listacomb.Add(new string[] { lMulti[i], lNivel[i] });
  38.             }
  39.  
  40.             listacomb.Sort(comparar);
  41.  
  42.             for (int i = 0; i < listacomb.Count; i++)
  43.             {
  44.                 lMulti[i] = listacomb[i][0];
  45.                 lNivel[i] = listacomb[i][1];
  46.             }
  47.         }
  48.        
  49.         static void Main(string[] args)
  50.         {
  51.            
  52.             List<string> lMulti = new List<string>(new String[] {"2","1","3"});
  53.             List<string> lNivel = new List<string>(new String[] {"2x","1x","3x"});
  54.  
  55.             Order(ref lMulti, ref lNivel,comparar);
  56.            
  57.  
  58.         }
  59.     }
  60. }
  61.  
  62.  
  63.  
  64.  

20
C/C++ / Re: eliminar posicion de arreglo bidimencional
« en: Sábado 7 de Mayo de 2011, 18:06 »
Para eliminar una posición de un array la única manera en C es desplazar los elementos a la izquierda.

Otra cosa de tu código: no puedes crear arrays de tamaños variables como estás haciendo, me refiero a que pones int N[n][m],
eso da un error en tiempo de compilación.

21
C# / Re: Ordenar listas - help
« en: Sábado 7 de Mayo de 2011, 15:59 »
Esto es lo único que se me ha ocurrido:

Código: C#
  1.  
  2. public static int comparar(string[] x, string[] y)
  3.         {
  4.             int num1, num2;
  5.  
  6.             num1 = Convert.ToInt32(x[0]);
  7.             num2 = Convert.ToInt32(y[0]);
  8.  
  9.             if (num1 > num2)
  10.                 return 1;
  11.             else
  12.                 if (num1 < num2)
  13.                     return -1;
  14.                 else return 0;
  15.          
  16.         }
  17.  
  18. public static void Order(ref List<string> lMulti, ref List<string> lNivel)
  19.         {
  20.             List<string[]> listacomb = new List<string[]>(lMulti.Count);
  21.  
  22.             for(int i=0;i<listacomb.Capacity;i++)
  23.             {
  24.                 listacomb.Add(new string[] { lMulti[i], lNivel[i] });
  25.             }
  26.  
  27.             listacomb.Sort(comparar);
  28.  
  29.             for (int i = 0; i < listacomb.Count; i++)
  30.             {
  31.                 lMulti[i] = listacomb[i][0];
  32.                 lNivel[i] = listacomb[i][1];
  33.             }
  34.         }
  35.  
  36.  

Primero creas una lista de arrays de string y los ordenas con un comparador personalizado (la función comparar). Luego vuelves a dividir la lista y ya está.

Habrá más formas y quizás esta no es la más eficiente pero bueno.

22
C/C++ / Re: pasar objeto MYSQL a funcion
« en: Sábado 7 de Mayo de 2011, 15:33 »
Tenías algún error en la definición de la función conecta:
Código: C
  1.  
  2.  
  3. #include <cstdlib>
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <ctime>
  7. #include <iostream>
  8. #include <string.h>
  9. #include <winsock.h>
  10. #include <stdlib.h>
  11. #include <cstdlib>
  12. #include <stdio.h>
  13. #include "mysql/mysql.h"
  14. #include <unistd.h>
  15.  
  16. using namespace std;
  17. int conecta(MYSQL *);
  18.  
  19. int main(){
  20.     MYSQL * myData;
  21.  
  22. consulta=AleatorioBolos(Lista,p,t,jug,b);
  23. cout<<consulta<<endl;
  24.      system("PAUSE");
  25.     return EXIT_SUCCESS;
  26. }
  27. //funcion conexion........//
  28. int conecta(MYSQL * myData){
  29. if(!(myData = mysql_init(0))) {
  30.    return 1;
  31. }
  32. //establezco conexion...//
  33.    if(!mysql_real_connect(myData, NULL, "dai2d12", "markos27", "dai2d12", MYSQL_PORT, NULL, 0)) {
  34.       // No se puede conectar con el servidor en el puerto especificado.
  35.       cout << "Imposible conectar con servidor mysql en el puerto "
  36.    << MYSQL_PORT << endl;
  37.    return 1;
  38. }
  39. else{
  40. cout<<"conectado con exito"<<endl;
  41. }
  42.  
  43.  

23
C# / Re: Separar termino de un string y hacer distributiva
« en: Sábado 7 de Mayo de 2011, 15:20 »
Esta podría ser una solución, aunque se puede mejorar, pero funciona.

Código: C#
  1.  
  2. public static string[] sTerminos(string sParentesis)
  3.         {
  4.  
  5.             List<string> cadenas = new List<string>();
  6.             string cadenaaux;
  7.             int indiceant = 0, indicepos = 0, total = 0;
  8.             total = sParentesis.Length;
  9.  
  10.             if (sParentesis.Length == 0)
  11.                 return null;
  12.             indicepos = sParentesis.IndexOfAny(new Char[] { '+', '-' }, 1);
  13.             if (indicepos != -1)
  14.             {
  15.                 cadenas.Add(sParentesis.Substring(0, indicepos));
  16.                 indiceant = indicepos;
  17.  
  18.                 while (total > indiceant)
  19.                 {
  20.                     indicepos = sParentesis.IndexOfAny(new Char[] { '+', '-' }, indiceant + 1);
  21.                     if (indicepos != -1)
  22.                     {
  23.                         cadenas.Add(sParentesis.Substring(indiceant, indicepos - indiceant));
  24.                         indiceant = indicepos;
  25.                     }
  26.                     else
  27.                     {
  28.                         cadenas.Add(sParentesis.Substring(indiceant, total - indiceant));
  29.                         indiceant = total;
  30.                     }
  31.                 }
  32.             }
  33.             else cadenas.Add(sParentesis);
  34.            
  35.            
  36.             return cadenas.ToArray();          
  37.            
  38.         }
  39.  
  40.  

24
C/C++ / Re: Problema pasar argv como parametro a funcion
« en: Jueves 5 de Mayo de 2011, 21:31 »
Por favor, explica un poco más que es lo que quieres porque con eso poco podemos hacer.

Yo supongo que quieres obtener los parámetros que se pasan por el main, pero no hace falta una función para eso.

Primero, tu declaración de main no es correcta.
La correcta es:
Código: C
  1.  
  2. int main(int argc,char **argv){
  3.  
  4.  

ó

Código: C
  1.  
  2. int main(int argc,char *argv[]){
  3.  
  4.  

Como observas argv es un doble puntero (lo puedes ver como un array de cadenas).

Para acceder a cada posición sólo tienes que acceder a cada posición del array:

argv[0] --> sería el nombre del programa
A partir de argv[1] vienen los parámetros pasados al ejecutable.

25
C/C++ / Re: undefined reference to 'nombre de funcion'
« en: Miércoles 4 de Mayo de 2011, 17:45 »
Cuatro cosas:

1. Pon #include "Conjunto.cpp" al final del fichero Conjunto.h
2. Tienes que poner template <class TIPO> antes de cada  método en Conjunto.cpp para declarar que es una plantilla.
3. El #include <Conjunto.h> cambialo por #include "Conjunto.h"
4. La funciones getCardinalidad y resize no las defines en ninguna parte, tienes que definirlas.

Es importante que compiles sólo usoConjunto.cpp, porque Conjunto.cpp se compilará cuando Conjunto.h lo requiera, creando las métodos necesarios a partir de la plantilla.

Hay otra forma de hacerlo sin poner #include "Conjunto.cpp" en el fichero Conjunto.h, que es poner en el propio Conjunto.h las definiciones de los metodos directamente y entonces si lo compilarías de la manera normal (es decir, los métodos con plantilla los defines en Conjunto.h y los de sin plantilla en Conjunto.cpp).

Fichero Conjunto.h
Código: C++
  1.  
  2.  
  3.     template <class TIPOP>
  4.     class posicion;
  5.      
  6.     template <class TIPO>
  7.     class conjunto{
  8.     public:
  9.      
  10.             conjunto();
  11.      
  12.             conjunto(const conjunto &c);
  13.      
  14.             bool pertenece(TIPO elem) const;
  15.      
  16.             void insertar(TIPO elem);
  17.      
  18.             void borrar(TIPO elem);
  19.      
  20.      
  21.             bool vacio(TIPO elem) const;
  22.      
  23.      
  24.             posicion<TIPO> begin();
  25.      
  26.             posicion<TIPO> end();
  27.      
  28.      
  29.             posicion<TIPO> siguiente(posicion<TIPO> posic);
  30.      
  31.             TIPO& elemento(posicion<TIPO> posic);
  32.      
  33.      
  34.             const TIPO& elemento(posicion<TIPO> posic) const;
  35.      
  36.      
  37.             TIPO& elemento(int posic);
  38.      
  39.      
  40.             int getCardinalidad();
  41.      
  42.     private:
  43.             void resize(int tam);
  44.            
  45.             TIPO* elementos;
  46.             int cardinalidad;      
  47.      
  48.     };
  49.      
  50.     template <class TIPOP>
  51.     class posicion{
  52.             conjunto<TIPOP> subconjunto;
  53.             int indice;
  54.     };
  55.  
  56. #include "Conjunto.cpp"
  57.  
  58.  

Fichero Conjunto.cpp


Código: C++
  1.  
  2.  
  3. template <class TIPO>  conjunto<TIPO>::conjunto(){}
  4.      
  5. template <class TIPO>                     conjunto<TIPO>::conjunto(const conjunto<TIPO> &c){}
  6.      
  7.   template <class TIPO>   bool            conjunto<TIPO>::pertenece(TIPO elem) const{}
  8.      
  9.  template <class TIPO>    void            conjunto<TIPO>::insertar(TIPO elem){}
  10.      
  11.  template <class TIPO>    void            conjunto<TIPO>::borrar(TIPO elem){}
  12.      
  13.  template <class TIPO>    bool            conjunto<TIPO>::vacio(TIPO elem) const{}
  14.      
  15.  template <class TIPO>    posicion<TIPO>  conjunto<TIPO>::begin(){}
  16.      
  17.  template <class TIPO>    posicion<TIPO>  conjunto<TIPO>::end(){}
  18.      
  19.   template <class TIPO>   posicion<TIPO>  conjunto<TIPO>::siguiente(posicion<TIPO> posic){}
  20.      
  21.   template <class TIPO>   TIPO&           conjunto<TIPO>::elemento(posicion<TIPO> posic){}
  22.      
  23.  template <class TIPO>    TIPO&           conjunto<TIPO>::elemento(int posic){TIPO var;
  24.                                                                             return var;}
  25.      
  26.   template <class TIPO>   const TIPO&     conjunto<TIPO>::elemento(posicion<TIPO> posic) const{}
  27.  
  28.   template <class TIPO> int conjunto<TIPO>::getCardinalidad(){return 0;}
  29.  
  30.   template <class TIPO> void conjunto<TIPO>::resize(int tam){};
  31.  
  32.  

Espero que te funciones

Páginas: [1] 2