• Sábado 27 de Abril de 2024, 00:55

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

Páginas: [1] 2 3
1
C/C++ / Re: Complementos(1 y 2)
« en: Miércoles 11 de Mayo de 2011, 19:56 »
En este enlace hay una explicación sencilla, y bastante buena,  del cálculo del complemento a dos.

http://es.wikipedia.org/wiki/Complemento_a_dos

3
C/C++ / Re: Error en el Bus!!
« en: Martes 4 de Enero de 2011, 21:51 »
Bueno, en mi opinión no es muy adecuado ese modo de operar.

En cuanto al otro problema debes darte cuenta que cuando k > 30 en  malloc probablemente se supera el límite para un entero (de 4 bytes) y el valor es indeterminado, por lo que puede que estes reservando menos memoria o ninguna,  y a la hora de acceder a los datos tengas un fallo de segementación.

4
C/C++ / Re: Error en el Bus!!
« en: Lunes 3 de Enero de 2011, 18:06 »
Cita de: "skymir"
Lo de reservar esa cantidad de memoria es porque tengo que generar 2^k palabras de tamaño n, es decir de n bits cada una y necesito tenerlas todas a mano durante la ejecucion del programa. Había probado ha guardarlas todas en un fichero pero esto hacía al programa muy lento y por eso opte por la opción de guardarlas en memoria.

Supongamos n=8 y k=10. Deberías reservar: 2^10 * 8 = 8192 bits = 1024 bytes.

Pero en realidad estas reservando (suponemos tamaño int = 4 bytes):
Código: C
  1. buffer=(int *)malloc((int)pot*n*sizeof(int));
  2.  
2^10 * 8 * 4 = 32768 bytes (¡32 veces más de lo necesario!).

Lo primero que debes hacer es averiguar cuantos bytes te hacen falta para almacenar una "palabra de n bits" y luego reservar la memoria necesaria.

5
C/C++ / Re: OpenCV svn + VideoInput
« en: Jueves 16 de Diciembre de 2010, 10:23 »
Puede que me equivoque, pero me parece que el fallo está en que a la hora de enlazar el código objeto con las bibliotecas no encuentra estas.
Echale un vistazo a esto:
http://www.jesusllor.es/?p=24

6
C/C++ / Re: OpenCV svn + VideoInput
« en: Miércoles 15 de Diciembre de 2010, 11:40 »
¿Le indicaste al compilador que enlazara la biblioteca OpenCV ?

7
C/C++ / Re: es igual en c q c++
« en: Sábado 11 de Diciembre de 2010, 11:40 »
en scanf en vez de %c (leer un carácter) debes utilizar %s para leer una cadena de texto.
Código: C
  1. scanf("%c",name);//se guarda en name el nombre del archivo de texto
  2.  
La variable name tiene que tener memoria reservada.

8
C/C++ / Re: ordenar
« en: Jueves 9 de Diciembre de 2010, 11:53 »
Para separar los números en una línea puedes utilizar la función strtok:
http://www.cplusplus.com/reference/clibrary/cstring/strtok/

y para pasar de una cadena de caracteres a un entero la función atoi:
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

9
C/C++ / Re: fecha del dia anterior
« en: Jueves 9 de Diciembre de 2010, 11:34 »
primer error:
Código: C
  1. if (dia>d)
  2.  
por la condicion anterior a esta es evidente que nuca se cumplirá (si es monor o igual a "d" no puede se mayor).
Lo correcto sería comprobar si es mayor de 1.
Código: C
  1. if (dia>1)
  2.  

Cuando es día 1 y estamos en enero el día anterior será el 31 de diciembre del año anterior.
Código: C
  1. if (mes==1)
  2.        {
  3.           dia=31;
  4.           mes=12;
  5.           anio--;
  6.        }
  7.  

finalmente en otro caso restamos un mes y calculamos el último día de ese mes.
Código: C
  1. else
  2.        {
  3.            mes--;
  4.            switch (mes)
  5.            {
  6.                   case 4: case 6: case 9: case 11: dia=30;  break;
  7.                   case 2: if (bisiesto(anio))
  8.                              dia=29;
  9.                            else
  10.                               dia=28;
  11.                           break;
  12.                   default: dia=31;
  13.            }
  14.        }    
  15.  

todo junto:
Código: C
  1. if (dia<=d)
  2. {
  3.    if (dia>1)
  4.       dia--;
  5.    else
  6.    {
  7.        //dia=1;
  8.        if (mes==1)
  9.        {
  10.           dia=31;
  11.           mes=12;
  12.           anio--;
  13.        }
  14.        else
  15.        {
  16.            mes--;
  17.            switch (mes)
  18.            {
  19.                   case 4: case 6: case 9: case 11: dia=30;  break;
  20.                   case 2: if (bisiesto(anio))
  21.                              dia=29;
  22.                            else
  23.                               dia=28;
  24.                           break;
  25.                   default: dia=31;
  26.            }
  27.        }    
  28.    }
  29.    printf("nEl  dia anterior sera:%2d-%2d-%d.",dia,mes,anio);
  30.    return TRUE;
  31. }
  32. else
  33.     return FALSE;
  34.  

10
C/C++ / Re: fecha del dia anterior
« en: Lunes 6 de Diciembre de 2010, 18:51 »
Como dije anteriormente tienes que cambiar todo el código. Pondré un trozo para empezar.
Código: C
  1. if (dia < 1) // no es el día primero
  2. {
  3.    dia--;
  4. }
  5. else // día primero
  6. {
  7.    // tenemos que calcular el último día del mes anterior y restar un mes a la fecha
  8.    // en el caso de que estemos en enero también hay que restar un año
  9. }
  10.  

11
C/C++ / Re: fecha del dia anterior
« en: Sábado 4 de Diciembre de 2010, 18:16 »
Cita de: "m0skit0"
Estás presuponiendo que usa Windows
Utilizando dev-c++, es más que probable.

12
C/C++ / Re: fecha del dia anterior
« en: Viernes 3 de Diciembre de 2010, 20:03 »
Si  buscas el día anterior deberías restar en vez de sumar.
Y cambiar todas las condiciones, que están pensadas para calcular el día siguiente (¿código copiado?).

La ventana se cierra porque termina de ejecutarse el código.
Utiliza el recurrido "system("pause") de la bibliteca "stdlib.h" al final para que no se cierre la ventana.

13
C/C++ / Re: Retornar cadena de texto en función
« en: Martes 16 de Noviembre de 2010, 18:03 »
El problema es que la variable s es un puntero que no tiene reservada una posición de memoria, sino que apunta a cualquier lugar (probablemente 0) provocando ese fallo de segmentación cuando intentas escribir en ella.
Inicializa con el operador new la variable.

14
C/C++ / Re: Problema con ejercicio en C
« en: Lunes 15 de Noviembre de 2010, 19:15 »
La función para calcular si es capicúa funciona, pero los cálculos cuantos más sencillos mejor:
Como es de tres cifras para que sea capicua tiene que coincidir las unidades con las centenas, o sea:
Código: C
  1. if (suma % 10 == suma/100) es capicua
  2.  
(como "suma" es un entero, "suma/100" devuelve las centenas sin decimales, también se puede asegurar mediante casting o una función de redondeo).

Por otro lado para leer el número de tres cifras lees tres números, que pasa si introduzco 1 22 1?
Lo correcto es leer un número y luego se comprueba si es de tres cifras:
Código: C
  1. scanf("%d", &suma);
  2.  
  3. while(suma!=0 ) //salir si cero
  4. {
  5.      // comprobamos que el número sea de tres cifras.
  6.      if (suma >99 && suma <1000)  comprobar si es capicua;
  7.  
  8.      scanf("%d", &suma);
  9. }
  10.  

15
C/C++ / Re: barras con asteriscos en c++
« en: Domingo 14 de Noviembre de 2010, 18:21 »
Con el último ejemplo que pones es verdad que el algoritmo no funciona. (No me había fijado en el número de elemento sino solamente en los ejemplos).
Supongo que para n = 5 entonces
Código: Text
  1. *
  2. **
  3. *
  4. ***
  5. *
  6. **
  7. *
  8. ****
  9. *
  10. **
  11. *
  12. ***
  13. *
  14. **
  15. *
  16. *****
  17. *
  18. **
  19. *
  20. ***
  21. *
  22. **
  23. *
  24. ****
  25. *
  26. **
  27. *
  28. ***
  29. *
  30. **
  31. *
  32.  

Si te das cuenta hay unos patrones que se repiten:

para ** antes y después
*

para *** antes y después
*
**
*

y así sucesivamente.
por lo que se deduce que tiene que ser una función recursiva para ir repitiendo los patrones para cada nivel:
Código: Text
  1. funcion recursiva(cont)
  2. {
  3.      si (cont == 1)
  4.      {
  5.               escribir("*n");
  6.      }
  7.      sino
  8.      {
  9.           recursiva(cont -1);
  10.           para i=1 hasta cont avance +1     escribir("*");
  11.           escribir("n");
  12.           recursiva(cont -1);
  13.      }
  14. }
  15.  
  16. int main ()
  17. {
  18.          leer(n);
  19.          recursiva(n);
  20. }
  21.  

16
C/C++ / Re: barras con asteriscos en c++
« en: Sábado 13 de Noviembre de 2010, 13:04 »
Una forma sencilla seria medainte unos bucles. Uno para aumentar el número de asteriscos y otro para disminuir.

Código: Text
  1. leer(cont);
  2. para i = 2 hasta  cont avance +1
  3. {
  4.      escribir("*n");
  5.      para j = 1 hasta  i avance +1
  6.      {
  7.            escribir("*");
  8.      }
  9.      escribir("n");
  10. }
  11. para i = cont - 1 hasta 2 avance -1
  12. {
  13.       escribir("*n");
  14.       para j = 1 hasta i avance +1
  15.       {
  16.               escribir("*");
  17.       }
  18.       escribir("n");
  19. }
  20. escribir("*n");
  21.  

17
C/C++ / Re: Por qué no funciona???
« en: Viernes 24 de Septiembre de 2010, 11:37 »
El problema está en las líneas 52 y 61. En vez de una compración estás realizando una asignación con lo que a continuación hay una división por cero.

Lo correcto:
Código: C
  1. if(np==0)
  2.  
Código: C
  1. if(ni==0)
  2.  


por otro lado yo no utilizaria tanto goto, que no ayuda a seguir el flujo de la ejecución (con tanto salto se puede perder el hilo), y utilizar la estructura while, por ejemplo.

18
C/C++ / Re: Aprendiendo poo en c++
« en: Lunes 6 de Septiembre de 2010, 20:26 »
Cita de: "vanessa99"
Si me compila muy bien gracias... solo que parece que esto va en contra de la ley de reutilizabilidad del código y así no es valido... como podria retornar sin afectar lo que es la programacion orientada a objetos?

Si te refieres a que devolviendo el puntero, desde fuera de la clase se puede modificar el valor. Es verdad.
Pero se puede solucionar facilmente copiando en otro puntero que será la salida.
Código: C
  1. char * Persona::mostrar_nombre()
  2. {
  3.      char *aux;
  4.      aux = (char *)malloc(sizeof(char)* strlen(nombre)+1);  //asignamos espacio: longitud del texto más caracter de fin de cadena
  5.      strcpy(aux,nombre); // copiamos el contenido
  6.      return aux;
  7. }
  8.  

19
C/C++ / Re: Aprendiendo poo en c++
« en: Sábado 4 de Septiembre de 2010, 09:44 »
Si quieres que la función devuelva una cadena de caracteres simplemente indica que el tipo de retorno:
Código: C
  1. char * Persona::mostrar_nombre()
  2. {
  3.      return nombre;
  4. }
  5.  

y modificar finalmente:
Código: C
  1. cout<<Pedro.mostrar_nombre()<<endl;
  2.  

20
C/C++ / Re: Sucesion Recursividad
« en: Jueves 2 de Septiembre de 2010, 21:00 »
La idea es ir restandole al número sucesivamente 1, 2, 3, ....

Cada vez que se resta una cifra comprobamos el resultado:
* si es cero: el número cumple la condición (es igual a la suma).
* si es menor que cero: no cumple (no es la suma de los elementos).
* si es mayor que cero: continuamos restando.

Solo hay que modificar la función:
Código: C
  1.  
  2. int num_guay(int n, int cont)
  3. {
  4.                  int aux = n - cont; // realizamos la resta
  5.                  if (n == 0) return 1;
  6.                  else if (n < 0) return 0;
  7.                  else return num_guay(aux, ++cont); // continuamos restando lo que queda por la cifra siguiente.
  8. }
  9.  
  10.  

La primera llamada a la función será con los datos:
Código: C
  1. res=num_guay(n,1);
  2.  
donde n es el número y 1 la primera cifra a descontar.

21
C/C++ / Re: Mezclar 2 For
« en: Miércoles 23 de Junio de 2010, 18:24 »
En el primer for estás cambiando el valor de i, aumentandolo hasta que tiene el valor de b. Por lo que en el segundo bucle se inicia con un valor de i que no es el proporcionó el usuario.
La solución es una variable auxiliar:
Código: C
  1. #include <stdio.h>
  2. #include <conio2.h>
  3. main(){
  4. int i, b, x;
  5. denuevo:
  6. printf("Ingrese un valor inicial ");
  7. scanf("%d", &i);
  8. printf("Ingrese un valor final ");
  9. scanf("%d", &b);
  10. if(i < 1 || b < 0){
  11. printf("Ingrese un numero positivo");
  12. getche();
  13. clrscr();
  14. goto denuevo;}
  15. else{
  16. for(x=(i+1); x<b; x++)
  17. printf("Numeros %dn", x);
  18. for(b=(b-1); i<b; b--)
  19. printf("Numeros %dn", b);
  20. getche();
  21. }
  22. }
  23.  

22
C/C++ / Re: algoritmo para comparar 3 numeros
« en: Domingo 30 de Mayo de 2010, 01:06 »
En:
Código: C
  1. if((s1>s2)&&(s1>s2))
  2.  
y
Código: C
  1. else if((s2>s3)&&(s2>s3))
  2.  
estas haciendo dos veces la misma comparación.
¿No deberías comparar cada sueldo con los otros dos?

23
C/C++ / Re: cconectar c++ con una base de datos sql
« en: Lunes 1 de Febrero de 2010, 20:28 »
En este enlace puedes encontrar las bibliotecas:

http://dev.mysql.com/downloads/connector/cpp/

y en este otro un ejemplo:

http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html

Espero que te sirva.

24
JavaScript / Re: Conocer tamaño ventana
« en: Jueves 28 de Enero de 2010, 18:32 »
document.body.clientHeight no es equivalente a window.innerHeight.
Por ejemplo, para lo que estoy creando se obtienen los siguientes valores:

Firefox:
document.body.clientHeight -> 2087
window.innerHeight -> 801

Explorer:
document.body.clientHeight -> 2083
window.innerHeight -> undefined

No tienen el mismo valor. Por tanto no son iguales.

Encontre la equivalencia. Es la propiedad:
document.documentElement.clientHeight

No todo lo que está en Internet tiene que ser cierto.

25
JavaScript / Re: Conocer tamaño ventana
« en: Martes 26 de Enero de 2010, 20:15 »
En primer lugar la propiedad document.body.clientHeight ya la probe.No es la información que necesito, quiero saber el tamaño del área visible, no del documento.

P.D.:
Citar
anda que...
Me gustaría que aclarase el porque del comentario.

Páginas: [1] 2 3