• Domingo 19 de Mayo de 2024, 14:56

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

Páginas: 1 ... 6 7 [8] 9 10 ... 32
176
C# / Re:asesoria C#
« en: Viernes 22 de Julio de 2011, 15:30 »
No se hacen tareas.

La idea es que hagas el codigo por ti mismo, y entonces si tienes algun error en la compilacion, o un error de logica, publica tu codigo y entonces con gusto se te dara ayuda, antes no.

Si de plano no sabes por donde comenzar, comienza por lo basico, busca en google cursos de programacion en C#, que hay varios ya publicados por internet

Saludos :)

177
Visual C++ / Re:MessageBox
« en: Jueves 21 de Julio de 2011, 15:50 »
El MessageBox de la windows API no es el mismo que el MessageBox de .NET.

Este MessageBox necesita como primer parametro un "Handle" a la ventana padre, si no tiene padre, simplemente pones NULL.

Código: [Seleccionar]
MessageBox(NULL, "No se pudo abrir el portapapeles", "Error")
Mas informacion (en ingles):

http://msdn.microsoft.com/es-es/library/ms645505.aspx

Saludos :)

178
Visual C++ / Re:Calculadora con switch
« en: Jueves 21 de Julio de 2011, 07:52 »
Citar
en vez de saltar el mensage cuando se selecciona una opcion incorrecta te dice que selecciones el dato1 y dato2 luego hace una suma y luego me salta el mensage... alguien me podria ayudar por favor.

Esto es porque lees las variables dato1 y dato2 antes del switch, debes leer las variables despues del switch y dentro de cada case

Ademas, recomiendo que uses una variable para el resultado de la suma, y otra para las opciones de tu menu, pues si ocupas la misma se borra la opcion:

Ejemplo:

Código: [Seleccionar]
      cout <<"[4]-Division.\n";
      cin >> opcion;
 
      switch(opcion)
      {
         case 1:
         cout <<"Escriba la primera cifra: ";
         cin >> dato1;
         cout <<"Escriba la segunda cifra: ";
         cin >> dato2;
         resultado = dato1 + dato2;
         break;
      case 2:
         // Repite la lectura en cada caso igual que arriba, y antes de hacer la operacion:

Citar
cuando selecciono la division siempre me salta el mensage de default y aparte me da el resultado:/.

Solo inserta un break; antes del default:
Código: [Seleccionar]
break;
default:

Saludos :)

179
C/C++ / Re:Como leer un archivo binario
« en: Miércoles 20 de Julio de 2011, 06:33 »
Hola tiwanacote, para empezar, aunque estas abriendo el archvo como binario, deberias utilizar lectura de bloque (read) en lugar de lectura de linea (getline).

Otro problema esta con el operador << sobrecargado que no permite imprimir los valores de tipo char en su equivalente numerico hecadecimal.

Lo mejor seria utilizar printf, que si permite imprimir un char como si fuena un numero en formato hexadecimal.

Te dejo un codigo de ejemplo, para que te des una idea de como hacerlo, probe el codigo y funciona bien con archivos de tamaño pequeño, no se hasta que tamaño de archivo pueda abrir sin dar error, es probable que si el archivo es muy grande deberas cargarlo por partes en lugar de todo para poderlo abrir bien, te quedaria de tarea hacer esa modificacion ;)

Código: [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;


int main()
{
    // Variable que guarda el tamaño del archivo en bytes
    unsigned int length;
    // Para que printf imprima los valores de forma correcta
    // es necesario que el buffer sea unsigned char en lugar de char
    unsigned char *buffer;
    // Modifica la siguiente linea para abrir otro archivo
    char nombre_archivo[] = "unidad.txt";

    ifstream archivo(nombre_archivo, ios::binary);

    if(archivo.fail())
        cout << "Error al abrir el archivo " << nombre_archivo << endl;
    else
    {
        // obtener longitud del archivo
        archivo.seekg (0, ios::end);
        length = archivo.tellg();
        archivo.seekg (0, ios::beg);

        // obtener memoria para la variable
        buffer = new unsigned char [length];

        // leer datos como bloque
        archivo.read ((char*)(buffer),length);
        archivo.close();

        // imprimir cada posicion del buffer como hexadecimal
        for (unsigned int i = 0; i < length; i++)
        {
            // 16 valores por linea, si deseas un numero diferente
            // modifica i % 16
            if (i % 16 == 0 && i != 0)
                printf("\n");
            if (buffer[i] < 16)
                printf("0%X ", buffer[i]);
            else
                printf("%X ", buffer[i]);
        }
    }

    return 0;
}

Saludos :)

180
C/C++ / Re:Hallar el tamaño de un vector
« en: Miércoles 20 de Julio de 2011, 02:41 »
La respuesta es sencilla, los vectores (y en general los array) cuando se usan como parametro en C/C++, se pasan por referencia (como si fueran punteros), y no por valor. Recordando:

1. Parametros por valor: se copia todo el contenido de la variable en la pila de la funcion:
2. Parametros por referrencia: se copia la direccion en donde se encuentra la variable en la pila de la funcion. Si es un vector, solo se copia la direccion del primer elemento del vector.

Por lo tanto, dado que solo tenemos la direccion del primer elemento, es imposible saber la longitud total del vector, y ademas como dije antes en realidad lo que se pasa es un puntero, entonces sizeof solo nos dara el tamaño del puntero, no el tamaño del pirmer elemento, ni tampoco el tamaño de todos los elementos.

Ahora en respuesta a tu pregunta:

Citar
como sacar el tamaño de un vector en un archivo aparte

No es posible sacar el tamaño, dado que como dije antes los vectores cuando se pasan como parametros a las funciones se comportan como punteros. Esa es la razon por la cual cuando se pasa un vector a una funcion, generalmente tambien se le pasa como parametro el tamaño del vector:

Código: [Seleccionar]
int f (int v [], int tam)
Ahora diras ¿y como es entonces que la funcion strlen() me devuelve el tamaño del vector de caracteres (cadena) sin pasarle yo el tamaño? ah, en ese caso recuerda que las cadenas terminan con nulo '\0', entonces strlen lo que hace es que cuenta los caracteres y se detiene cuando llega al nulo, de esa forma encuentra el tamaño de la cadena.

Entonces, a menos que le pases como parametro el tamaño de tu vector a la funcion, o utilices algun tipo de marcador como en el caso de las cadenas, para indicarle que llego al final del vector, no hay manera de saber el tamaño de un vector pasado como parametro.

Saludos :)

181
Pero si clicas en la propia pestaña Perfil o en Resumen (las dos llevan al mismo sitio) aparecen nuevas opciones, entre ellas Editar Perfil dentro de la cuál está Configuración de Apariencia y Diseño y ahí se puede configurar el formato de hora.

Este consejo solucionó mi problema, gracias Iron Man, la verdad estaba medio oculta la opción y no la encontraba, pero gracias a ti la encontre :)

Citar
Usa el cursor del mouse para seleccionar el texto, si estas en Windows, Linux o similar oprime Crtl+c y listo

Eso ya se hacerlo Su-, ese no es el problema, el problema es que si el codigo es muy largo (mas de 15 lineas), se vuelve muy complicado seleccionarlo, al menos en mi caso, tengo que ir haciendo scroll, y a veces,  no se porque, cuando desplazo hacia abajo, me selecciona toda la pagina y no solo el codigo marcado, es por eso que es mas comodo seleccionar de la otra forma, pero bueno, que le vamos a hacer.

Saludos :)

182
Llevo varias horas conectado y hasta el momento no he tenido problemas con la opción de mensajes no leídos. Los que voy leyendo desaparecen de la lista y los que no, permanecen en la lista aunque la recargue una y otra vez. Supongo que utilizas el enlace Nuevos Temas que hay en la parte superior del foro, no? La verdad es que es muy extraño  :think:

Si, esa es la opcion que utilizo, la verdad si es extraño, bueno quizas sea error mio entonces, estare revisando, a ver si me pasa de nuevo.

183
Hola IronMan, se agradece la rapidez en la respuesta. Ahora te reviro de nuevo las respuestas :P

1. Se agradece el cambio :)

2. No me aparece la opcion que mencionas, las unicas 3 opciones que me aparecen en perfil son "resumen", "configuracion de cuenta" y "perfil de foro", quizas sea algo de permisos, o quizas solo le aparece la opcion al administrador.

3. Es una lastima saber que hay ese problema con GeSHi, ya que la opcion de seleccionar es util, sobre todo si el codigo es muy largo, ya que cuesta trabajo seleccionarlo con coloreado si es largo (mas de 10 lineas aproximadamente) supongo que usare el code sin coloreado si el codigo es muy largo.

4. Gracias de nuevo por revisar eso.

Saludos :)

184
Hola IronMan, la pagina de solo codigo ha quedado bastante bien, sin embargo, hay algunas cosas que no me agradaron mucho, en especial que ahora los foros son SMF en lugar de phpBB, en lo personal prefiero mil veces los foros phpBB, no se porque, la interfaz de los foros SMF no me agrada mucho, bueno esa es mi opinion personal, pero bueno, dejando eso de lado, pondre los detalles que no me agradan, las opciones que no encuentro, a ver si me dices como hacerlo, o si se puede cambiar.

1. Ahora los foros aparecen bajo el nombre de "comunidad", quizas sea cosa de acostumbrarse, pero al menos en mi caso no encontraba como entrar a los foros  :whistling:, quizas sea mejor cambiar el menu de comunidad por foros.

2. No encuentro como personalizar la manera en que me aparece la fecha, las horas aparecen en formato 00:00-24:00, me agrada mas en formato am/pm, no se si se pueda personalizar.

3. No encotre como seleccionar el codigo en etiquetas [ code ], si elijo una etiqueta con un lenguaje especifico para el coloreado de sintaxis, te dejo el ejemplo, para que veas a que me refiero:

Código: [Seleccionar]
#include <cstdio>
Código: C++
  1. #include <cstdio>

4. La opcion de mensajes nuevos no leidos desde la ultima visita (nuevos temas), la lista se borra demasiado rapido, si accidentalemnte elijo la opcion de recargar la pagina, los mensajes que no he leido se borran de la lista, aun cuando valga la redundancia no los haya ledio aun  :ball:, eso hace que el seguimiento de los temas que vas contestando sea mas dificil, pues si se borra la lista, debes entrar a cada subforo para ver que mensajes aun no lees/contestas, quitando toda utilidad a la opcion de nuevos mensajes

Bueno, esos son los detalles que note, si sabes como puedo hacer para hacer lo que quiero, o si se puede corregir, sere feliz, si no, pues como dije antes tendremos que irnos acostumbrando  :whistling:

Saludos :)

185
C/C++ / Re:Lista ligada
« en: Lunes 18 de Julio de 2011, 08:33 »
Hola, revise el codigo y esto es lo que encontre:

1. Utilizas void main(), y eso da problemas, lo correcto es declarar main como int, y agregar un return 0; para evitar errores es la compilacion:

http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3

2. Debes limpiar el buffer despues de hacer el scanf, y ademas es mejor utilizar getchar() para leer la letra que utilizar scanf.

3. En la funcion insertar_letra, la condicion del while debe ir invertida, para evitar que el programa se cierre con error en caso de que el puntero sea nulo.

4. El algoritmo para eliminar el elemento de la lista en la lista ordenada esta completamente equivocado, a continuacion un enlace con el algoritmo correcto:

http://www.algoritmia.net/articles.php?id=13

El resto de las funciones estan correctas.

Por ultimo te dejo el codigo de las funciones corregidas, revisalo y comparalo con el tuyo.

Código: C++
  1. int main (){
  2.  
  3.     int opt = 1;
  4.     char valor;
  5.     ptrnuevoNodo lista = NULL;
  6.  
  7.     menu ();
  8.  
  9.     while ( opt != 4 ){
  10.         printf ("? ");
  11.         scanf ("%d", &opt);
  12.         // Borrar el buffer despues de leer la opcion
  13.         while (getchar() != '\n');
  14.  
  15.         switch ( opt ){
  16.         case 1:
  17.             imprimir_lista (lista);
  18.             break;
  19.         case 2:
  20.             printf ("Introduce un caracter\n");
  21.             // Usar getchar() en lugar de scanf
  22.             //scanf ("%c", &valor);
  23.             valor = getchar();
  24.             insertar_letra (&lista, valor);
  25.             imprimir_lista (lista);
  26.             break;
  27.         case 3:
  28.             printf ("Introduce un caracter\n");
  29.             scanf ("%c", &valor);
  30.             eliminar_letra (&lista, valor);
  31.             imprimir_lista (lista);
  32.             break;
  33.             // Innecesaria
  34.             //case 4:
  35.             //    break;
  36.         default:
  37.             printf ("Opcion incorrecta\n");
  38.             menu ();
  39.  
  40.         } // switch
  41.     } // while
  42. }
  43.  
  44. void insertar_letra (ptrnuevoNodo * lista, char valor){
  45.  
  46.     ptrnuevoNodo ptrNuevo = NULL;
  47.     ptrNuevo = (struct nodo*) malloc ( sizeof ( struct nodo ) );
  48.  
  49.     if ( ptrNuevo == NULL ){
  50.         printf ("No hay memoria disponible \n");
  51.     }
  52.     else {
  53.         ptrNuevo->letra = valor;
  54.         ptrNuevo->siguiente = NULL;
  55.         ptrnuevoNodo ptrAnterior = NULL;
  56.         ptrnuevoNodo ptrActual;
  57.         ptrActual = *lista;
  58.  
  59.         //while ( ptrActual->letra < valor && ptrActual != NULL ){
  60.         while ( ptrActual != NULL && ptrActual->letra < valor ) {
  61.             ptrAnterior = ptrActual;
  62.             ptrActual = ptrActual -> siguiente;
  63.         }
  64.  
  65.         if ( ptrAnterior == NULL ){
  66.             ptrNuevo->siguiente = ptrActual;
  67.             *lista = ptrNuevo;
  68.         }
  69.  
  70.         else{
  71.             ptrAnterior->siguiente = ptrNuevo;
  72.             ptrNuevo->siguiente = ptrActual;
  73.         }
  74.     }
  75. }
  76.  
  77. void eliminar_letra (ptrnuevoNodo * lista, char valor){
  78.  
  79.     ptrnuevoNodo ptrActual, ptrAnterior;
  80.     ptrActual = ptrAnterior = *lista;
  81.  
  82.     /* 1.- busca su posicion. Es casi igual que en la insercion, ojo al (<) */
  83.     while (ptrActual != NULL && ptrActual->letra < valor) {
  84.         ptrAnterior = ptrActual;
  85.         ptrActual = ptrActual->siguiente;
  86.     }
  87.  
  88.     /* 2.- Lo borra si existe */
  89.     if (ptrActual != NULL && ptrActual->letra == valor) {
  90.         if (ptrAnterior == ptrActual)        /* borrar el primero */
  91.             *lista = ptrActual->siguiente;   /* o tambien (*L)->sig; */
  92.         else                                 /* borrar en otro sitio */
  93.             ptrAnterior->siguiente = ptrActual->siguiente;
  94.         free(ptrActual);
  95.     }
  96. }
  97.  

Saludos :)

186
C/C++ / Re: Vectores y Struct
« en: Domingo 17 de Julio de 2011, 05:13 »
Hola elpis, te recomiendo que utilices [ code][ /code] (sin espacio en los corchetes) cuando publiques tu codigo, o en el editor utiliza el code, que esta junto al boton de quote para encerrar tu codigo, eso mejora la legibilidad.

Dicho eso, vamos al asunto:

Lo he probado, y al menos no entiendo eso que dices de que no detecta las opciones, quieres decir que no ejecuta las funciones dentro del switch/case? Eso quizas se deba a que tienes las opciones dentro de cada case como comentario, quita los comentarios para que se ejecute.

Pero dejando eso de lado, revisando tu codigo, hay varios errores en tu codigo, a continuacion ire mencionando los mas relevantes:

1. Defines una constante TEMP para guardar el numero maximo de temperaturas, pero no lo estas utilizando en varias funciones, utilizas directamente el numero, ejemplo: for(i=0;i<16;i++) en lugar de for(i=0;i<TEMP;i++)

2. Estas utilizando 16 como indice maximo de numero de temperaturas, cuando tu vector lo defines como struct temperatura temp[15], ademas el indice maximo en realidad es 14, no 15 ya que en C/C++ los arreglos comienzan en cero, entonces un vector de 15 elementos va de 0 a 14, no de 0 a 15. Si tratas de utilizar el indice 15 (que seria el equivalente al elemento 16) probablemente corrompas la memoria, y tu programa fallara, ademas como dije antes utiliza la constante definida TEMP para el tamaño de tu vector (struct temperatura temp[TEMP]) asi si cambias el tamaño del vector, automaticamente cambiara en todo el programa.

3. Otro detalle, en las funciones defines tu encabezado y pasas como parametro el vector con su tamaño, ejemplo:

Código: C++
  1.  
  2. void mayor(struct temperatura temp[TEMP])
  3.  
  4.  

Esto no es necesario con los vectores, de hecho, el tamaño del vector es ignorado, lo correcto es lo siguiente:
Código: C++
  1.  
  2. void mayor(struct temperatura temp[])
  3.  
  4.  

En el caso de arreglos de mas de una dimension (bidimencional o matriz, tridimencional, cuatridimencional, etc) solo es necesario definir el tamaño de las dimencion 2 en adelante, la primera dimension se deja vacia, por ejemplo, si utilizo una matriz de 5 x 5, se definiria el encabezado de la funcion asi:

Código: C++
  1.  
  2. void mi_funcion(int mi_matriz[][5])
  3.  
  4.  

Si deseas manejar correctamente el tamaño de un vector dentro de una funcion, la manera de hacerlo es utilizando un parametro adicional que guarde el tamaño, y utilizando ese parametro dentro de la funcion para asegurar que no sobrepasamos el limite del vector. Dicho eso, la manera mas correcta en realidad para definir tu encabezado seria:

Código: C++
  1.  
  2. void mayor(struct temperatura temp[], int tamano)
  3.  
  4.  

Donde "tamano" tendra el tamaño maximo de tu vector.

4. Tambien utilizas un puntero a char (char *ciudad) para guardar el nombre de la ciudad, esto puede inducir a problemas si no sabes bien hacia donde apunta el puntero (y deduzco por tu codigo que aun no sabes manipular bien los punteros), lo mas correcto para evitar problemas seria definir ciudad como un arreglo de char y copiar el contenido mediante la funcion strncpy(), que esta dentro de la libreria string.h, de la siguiente manera:

Código: C++
  1.  
  2. char ciudad[10];
  3. strncpy(ciudad, temp[i].ciudad, 10);
  4.  
  5.  

5. La funcion funcion main() es la unica que no puede ser de tipo void, siempre debe ser de tipo int, y regresar un valor, si se declara como void esto puede traer problemas. Si no utilizas el valor de regreso, y para evitar errores de compilacion, solamente coloca un return 0; al final de tu main(). Para que te quede claro, la definicion de main() seria:

Código: C++
  1.  
  2. int main()
  3. {
  4.  return 0;
  5. }
  6.  
  7.  

Mas informacion del porque no puede ser void main():

http://c-faq.com/ansi/voidmain.html
http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3

Por ultimo te dejo el codigo corregido de una de tus funciones para que te des una idea de como debe ser, te queda de tarea modificar el resto :)

Código: C++
  1.  
  2. // Deberas llamar a la funcion asi: mayor(temp, TEMP);
  3. void mayor(struct temperatura temp[], int tamano)
  4. {
  5.     clrscr();
  6.     int mayor, i;
  7.     char ciudad[10];
  8.     mayor = temp[0].temp_prom;
  9.     strncpy(ciudad, temp[0].ciudad, 10);
  10.  
  11.     for(i = 0; i < tamano; i++)
  12.         if(temp[i].temp_prom > mayor)
  13.         {
  14.             mayor = temp[i].temp_prom;
  15.             strncpy(ciudad, temp[i].ciudad, 10);
  16.         }
  17.         printf("ntNumero mayor %i en %s",mayor,ciudad);
  18.  
  19. }
  20.  
  21.  

Saludos y suerte :)

187
Felicidades IronMan, he echado un vistazo al nuevo diseño y me parece excelente, creo que ya era justo un lavado de cara para la web, por mi parte siempre he sido fiel seguidor de la pagina desde sus inicios, incluso antes, cuando solo era una pagina dedicada extrictamente al lenguaje C, sin foros, ya no recuerdo como se llamaba antes, tanto tiempo de eso  :D

Espero que con esto tambien se solucione un problema que ultimamente ha estado ocurriendo, donde la pagina al parecer se satura demasiado y marca un error en MySQL.

Como sugerencia adicional, ya que estamos con los cambios, sugeriria que revisaras el tema de falta de moderadores en los foros, ya que he notado que a veces no hay nadie que modere los mensajes, en especial en los foros con mayor movimiento, como son los de lenguaje C y C# por poner mi caso.

Saludos y en hora buena :)

188
Visual C++ / Re: PROBLEMA CON ARREGLO DE STRINGS
« en: Jueves 14 de Julio de 2011, 05:19 »
Por favor no repitas los post, ayer publicaste uno igual a este: http://foros.solocodigo.com/viewtopic.php?f=85&t=46243&p=164046#p164046

Recuerda que si nadie te contesta, es porque probablemente nadie sabe la respuesta, en mi caso no se como lo podrias hacer para optimizarlo mas, yo cargaria todo el archivo en memoria, hasta un maximo predeterminado, pero optimizarlo, ni idea.

Saludos :)

189
C/C++ / Re: ordenar caracteres
« en: Lunes 11 de Julio de 2011, 00:35 »
Cita de: "elpis"
no se me ocurre la funcion para ordenar los caracteres, me podrían ayudar?

Hay varios algoritmos de ordenacion, el mas sencillo es "ordenacion por burbuja", aunque no es muy eficiente, pero como dije antes es el mas sencillo de aprender e implementar. Solo busca en google ordenacion por burbuja, o en ingles bubble sort.

Solo un detalle mas, en tu programa estas usando punteros (*numeros, *caracteres) pero no les asignas memoria, eso es un error, puedes corromper la memoria y obtener errroes de segment fault. Utiliza un array en lugar de punteros, o asignales espacio en memoria a los punteros con malloc().

Saludos :)

190
C/C++ / Re: Alguien que me de una mano?
« en: Lunes 11 de Julio de 2011, 00:20 »
Cita de: "cuervofran"
solo codigo que foro de XXXXX que sosssssssssssssssssssssssssssssss!


Esa no es la forma de pedir las cosas.

1. En primer lugar, no estas pagando para ponerte exigente, aqui se ayuda desinteresadamente, sin esperar nada a cambio, pero tampoco es una obligacion.

2. El foro no se llama solo tareas, es solo codigo, por regla general no se hacen tareas por aca, si tienes fecha de entrega para la tarea, es problema tuyo, no nuestro, debiste hacer tu tarea con tiempo y prestar mas atencion en tus clases, si tanta urgencia tienes en la solucion, pagale a algun compañero de tu escuela que sepa mas que tu para que te lo haga.

3. Ademas, publicas el codigo incompleto, el codigo que pones no es suficiente para averiguar cual es el problema, no digo que publiques todo, pero si un trozo mas completo, que incluya la definicion de tus variables, ademas no nos marcas la linea exacta en donde te marca error. Todavia no tenemos dones de adivino para magicamente saber cual es el problema de tu codigo.

Dado que este mensaje no aporta nada productivo, ya lo he reportado.

Solo medita lo que te dije, y espero que aprendas a comportarte mejor.

Saludos...

191
C/C++ / Re: Memoria dinamica C++
« en: Sábado 9 de Julio de 2011, 05:02 »
Cita de: "ClRg"
no me queda claro en que situaciones es necesario su uso. Alguien podria darme una mano y explicarmelo

La respuesta es simple, en todas las situaciones, si quieres hacer programacion en serio.

Te pongo un ejemplo simple, quieres manejar los datos de 10 personas, elaboras tu programa sin memoria dinamica, es decir, solo con memoria estatica, lo compilas, lo corres y funciona bien para 10 personas.

Ahora ¿Que pasa si mas adelante necesitas manejar los datos de 20 personas y no 10? Pues resulta que tu fabuloso programa no sirve para 20, solo para 10, asi que tienes que irte a modificar el codigo, y compilarlo de nuevo. ¿Y si despues necesitas manejar los datos de 100? la misma historia, y asi cada vez que cambies el numero de personas.

¿Y si para prevenir los casos anteriores, te decides por hacer tu programa con un numero alto, que sabes que nunca llenaras, por ejemplo, 10,000 personas? Pues entonces estaras desperdiciando memoria, si solo utilizas espacio para 10, tendras 9,990 espacios desperdiciados, memoria que podria ser utilizada para otros programas que tambien se esten ejecutando en la misma maquina.

Con la memoria dinamica nunca tendras ese problema, ya que solo utilizaras la memoria justa para cada caso, no necesitaras modificar tu programa y recompilarlo cada vez que cambie el numero de personas, y no desperdiciaras espacio en caso que el numero de personas sea pequeño en algunos casos y no grande.

Saludos :)

192
SQL Server / Re: CLAVE PRIMARIA ACEPTA VALORES NULOS
« en: Viernes 8 de Julio de 2011, 16:38 »
Para agregar restriccion a la tabla usa lo siguiente:

Código: SQL
  1.  
  2. ALTER TABLE tabla
  3. ADD CONSTRAINT CK_tabla_columna CHECK (columna <> '')
  4.  
  5.  

Solo verifica que la columna no haga conflicto con la restriccion antes de añadir la restriccion, es decir, si la columna contiene una cadena en blanco, no te dejara añadir la restriccion. Primero elimina/modifica la fila que contenga la columna que hace conflicto con la restriccion, y
entonce ya te dejara añadir la restriccion

Saludos :)

193
Bueno antes que nada para ponerlo en contexto, dire que vivo en Mexico, soy profesional independiente (Lic en Informatica), y actualmente estoy buscando trabajo fijo en alguna empresa, asi que deje mi curriculum en una de esas paginas de empleo.

Hatsa ahora solo me habian llegado correos en los que te piden dinero para realizar un examen medico antes de que te den el puesto, fraudes a todas luces, ya que incluso son correos con remitente en gmail XD

Pero hoy me llegaron 2 correos de una empresa llamada tesis.com, incluso tienen pagina web, y segun dicen se han tratado de comunicar conmigo por telefono, lo raro es que no he recibido ninguna llamada y en casa siempre hay alguien para contestar mi telefono aunque no este.

Me enviaron unos formularios para que los llene, y hasta ahorita no me han pedido dinero, pero dado que los formularios me estan pidiendo informacion muy detallada de mi persona, y los que vivimos en Mexico sabemos lo "caliente" que esta la cosa por aca, como para dar tu informacion personal, quiero sabes si alguien mas sabe algo de esta empresa, ¿es real? ¿o solo otro fraude mas elaborado hasta ahora?

Dejo a continuacion uno de los correos que me llegaron, eliminando algunas partes.

Citar
Estimado xxxxx,
Buen día, hemos localizado tu CV en la página de xxxxx,  estamos interesados en platicar contigo sobre nuestras ofertas, debido a que deseamos que asistas a una entrevista en xxxxx el dìa Viernes a las 9 am, y queríamos conocer tu disponibilidad. Te agradecería que me proporciones algún teléfono para contactarme contigo y me indiques día y hora en que podamos llamarte para realizar una entrevista telefónica.
 
Brevemente te comento que actualmente nos encontramos en un fuerte periodo de expansión, mismo que va de  la mano de vacantes en el área de Automatización, para ello estamos requiriendo recursos que cubran con el perfil de Programadores.NET.

Para dar continuidad al proceso  se requiere de un formato de ingreso, un estudio de entorno y formato de sistemas  los  cuales anexo al presente para que  devuelvas a este mi correo. Así mismo te pido envíes tus respuestas con copia a las Lic. xxxxx y a la Lic. xxxxx del Departamento de Recursos Humanos así como tu CV actualizado  para que  podamos dar seguimiento a tu caso.

A tus órdenes y quedo en espera de tu respuesta.

Te pido confirmes la recepción de los formatos y envíes a la brevedad.

Me encuentro a la orden.

Saludos Cordiales

http://www.tesis.com

Si alguien sabe sobre este empresa, le agradeceria que me diera su opinion.

Saludos :)

194
C/C++ / Re: Exportar funciones desde c++
« en: Miércoles 6 de Julio de 2011, 02:59 »
Hola xouba, bienvenido al foro.

Bueno, para aclarar un poco tu duda, te dire que si, lo mas recomendables es colocar en el archivo .h el encabezado de tus funciones/clases, y la definicion de tus funciones/clases en otro archivo.

Te dire sin embargo que es posible colocar todo el codigo de tu clase y no solo los encabezados en un archivo .h aunque no se recomienda.

Pero deberas ademas utilizar las directivas dllexport/dllimport segun desees exportar(archivo dll) o importar(archivo exe) el codigo.

No tengo un ejemplo a la mano en español de como debes hacerlo exactamente, pero buscando en google puedes encontrar mas informacion. Prueba buscando dllexport.

Te dejo algunos enlaces (en ingles) con mas informacion, o busca mas por tu cuenta ;)

Exportar DLL

Exportar DLL para usarla en C

Importar DLL

Curso rapido de como exportar a una DLL

Saludos :)

195
C/C++ / Re: una mano con este programa.! en c++
« en: Viernes 1 de Julio de 2011, 02:27 »
No se hacen tareas

196
C# / Re: Duda variables locales eficiencia
« en: Miércoles 29 de Junio de 2011, 17:33 »
Cita de: "gabio2"
Puedes usarlo como gustes, siempre y cuando liberes los recursos es decir a tu objeto de tipo Stream cuando te termine de servir usar el método Dispose()  de tú objeto.

Difiero de la respuesta de gabio2, no es necesario usar el dispose de C# en este caso, ya que C# no es como C++, en C# tienes el "recolector de basura" (garbage collector) que automaticamente libera las variables no utilizadas, el problema es que no hay manera de decirle al recolector especificamente que libere la memoria cuando tu lo deseas, aun llamando explicitamente a dispose(), el recolector lo hace cuando lo cosidera necesario, y ademas el problema en este caso no es la memoria, es que creas una variable nueva cada vez, y eso consume tiempo del procesador, aqui hablamos de rapidez, y es mas rapido usar en este caso una variable definida previamente que crear una variable cada vez, si llamaras al metodo pocas veces no importaria, pero dado que comentas que llamas al metodo cada medio segundo eso significa que cada medio segundo creas una variable nueva.

Saludos :)

197
C# / Re: Pasar variables de un Form a otro
« en: Miércoles 29 de Junio de 2011, 17:12 »
Hola onis2, te recomiendo que utilices [ code][ /code] (sin espacio en los corchetes) cuando publiques tu codigo, o en el editor utiliza el code, que esta junto al boton de quote para encerrar tu codigo, eso mejora la legibilidad, porque la verdad asi como publicaste tu codigo esta ilegible.

Bueno, trate de compilar tu codigo, pero como esta incompleto, me da error, en fin revisando lo poco que pude ver, ya que como dije anets tu codigo esta ilegible parece que el error esta aca:

Código: C#
  1. public void MostrarCampos_PedidoTienda()
  2.  
y aca

Código: C#
  1.  string entitystate = Form1.MostrarCampos_PedidoTienda(contenido);
  2.  

Para poder regresar valores con return, debes definir el metodo del tipo que deseas regresar y no como void, o tambien puedes utilizar parametros.

Utilizando tipos de retorno (return):

Código: C#
  1.  
  2.         public string MostrarCampos_PedidoTienda()
  3.         {
  4.             // Bla blba bla mi codigo.
  5.             return contenido;
  6.         }
  7.  
  8.  

Código: C#
  1. string entitystate = Form1.MostrarCampos_PedidoTienda();
  2.  

Utilizando parametros:

Código: C#
  1.  
  2.         public void MostrarCampos_PedidoTienda(ref string contenido)
  3.         {
  4.             // Bla blba bla mi codigo.
  5.         }
  6.  
  7.  

Código: C#
  1.  
  2. Form1.MostrarCampos_PedidoTienda(ref contenido);
  3. string entitystate = contenido;
  4.  
  5.  

En este caso es igual que utilices tipos de retorno o parametros, ya que solo necesitas un valor.
Si necesitas regresar mas de un valor, eso no se puede hacer con return, en ese caso se utilizan forzozamente parametros

P.D.: en lo que estaba escribiendo mi solucion te dieron respuesta, esa forma que recomienda gabio2 tambien es valida

Saludos :)

198
C# / Re: Duda variables locales eficiencia
« en: Miércoles 29 de Junio de 2011, 16:23 »
Creo que tu mismo sabes la respuesta, es logico, pero aun asi te la dire.

Es mas eficiente crear tu variable como atributo de la clase, en lugar de crearla dentro del metodo. Recuerda definirla como private o protected si no deseas acceder a ella desde fuera de la clase.

Saludos :)

199
MySQL / Re: Planteamiento inicial proyecto
« en: Martes 28 de Junio de 2011, 16:04 »
Cita de: "Africa_Reina"
cual creéis que puede ser el mejor sistema para implementar todo esto. Sé de lenguajes de programación pero hace tiempo que estoy fuera del mundillo por lo que toda sugerencia me viene genial.

Suena ilogico lo que dices, por un lado dices que es tu proyecto de carrera, y por otro que tienes tiempo fuera del mundillo, ¿acaso no tocaste una computadora durante toda tu carrera? Si la respuesta es afirmativa, pues has hecho muy mal, el area de sistemas/informatica es un area en constante evolucion, y debiste estar actualizandote y leyendo sobre el area desde el pirncipio, pero bueno  &lt;_&lt; ...

Ahora, la respuesta de el mejor sistema en realidad no es tan larga, el mejor sistema para desarrollarlo es el que sepas manejar mejor tu. Si sabes manejar mysql, utiliza mysql, si sabes utilizar postgre, postgre, si usas sql server, entonces sql server, y asi en general. Incluso si solo sabes manejar C++ y archivos, puedes utilizar esa opcion, sin necesidad de un SMBD. Cualquiera que elijas, si lo conoces bien, sera el adecuado.

Si no sabes manejar ninguno, pues comienza a aprender alguno.

Saludos y suerte con tu proyecto :)

200
SQL Server / Re: Restar resultados de dos tablas
« en: Sábado 25 de Junio de 2011, 20:17 »
Hola intebysa, te recomiendo que utilices [ code][ /code] (sin espacio en los corchetes) cuando publiques tu codigo, o en el editor utiliza el code, que esta junto al boton de quote, eso mejora la legibilidad del codigo.

Respecto a tu duda, en algunos casos estas utilizando Fichas.categoria y en otros Fichas.FichaAsignada, no se si eso tenga que ver algo.

Suponiendo que fuera categoria y no FichaAsignada, creo que las siguientes consultas te daran el resultado que deseas.

Código: SQL
  1. SELECT * FROM Fichas
  2. WHERE idficha NOT IN
  3. (SELECT fichas.idficha FROM AccionesEnFichas, Fichas
  4. WHERE AccionesEnFichas.IdFichas=Fichas.IdFicha
  5. AND Fichas.categoria LIKE '%A%')
  6. AND categoria LIKE '%A%'
  7.  

Código: SQL
  1. SELECT COUNT(idficha), categoria FROM Fichas
  2. WHERE idficha NOT IN
  3. (SELECT fichas.idficha FROM AccionesEnFichas, Fichas
  4. WHERE AccionesEnFichas.IdFichas=Fichas.IdFicha)
  5. GROUP BY categoria
  6.  

Saludos :)

Páginas: 1 ... 6 7 [8] 9 10 ... 32