elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 160
51  Programación / Programación C/C++ / Re: El "sizeof" para saber el tamaño del arreglo no me funciona en: 4 Abril 2015, 08:20 am
Con ese código solamente me muestra el 5.
Si tomamos ese fragmento de código y en base a el creamos el programa mas pequeño posible (sin otra función mas que main) funciona correctamente. Pero si declaras el array en una función y en otra tratas de obtener su tamaño se genera el comportamiento que mencionas.

Para evitar confusiones mejor publica el código fuente completo del programa.

Un saludo
52  Programación / Programación C/C++ / Re: Asociar iconos a tipos de archivo en: 3 Abril 2015, 17:21 pm
tengo curiosidad por como podría programar algo en C++ que me permita modificar en Windows el icono asociado a un tipo de archivo
Si apenas empiezas con tu aprendizaje en C o C++ te recomendaría que lo dejaras para después.

En todo caso debes modificar la asociación del archivo en el registro de Windows, esto en lo general se describe (en ingles) en la pagina Extending Context Menus and Changing File Icons y las funciones de la Win32 API para trabajar con el registro en MSDN: Registry Functions.

Un saludo
53  Programación / Programación C/C++ / Re: Duda con variable en: 3 Abril 2015, 16:48 pm
Quiero saber porque me da error al declarar un array muy grande y como puedo hacer para declararlo.

Despues de ver que me daba error, probando he visto que si declaro un array de mas de 51000 me da error. la cosa es que compila pero cuando ejecuto me salta un error de windows que dejo de funcionar al instante de ejecutarlo.
Ello se debe a los limites que cada compilador decide para el tamaño máximo de un objeto.

Una discusión sobre los limites en el lenguaje C es Array size limits.

En cuanto al ultimo borrador del estándar de C++ el tema se trata en el anexo B:
Citar
Annex B    (informative)
Implementation quantities [implimits]
1    Because computers are finite, C ++ implementations are inevitably limited in the size of the programs they
can successfully process. Every implementation shall document those limitations where known. This documentation may cite fixed limits where they exist, say how to compute variable limits as a function of available
resources, or say that fixed limits do not exist or are unknown.
2    The limits may constrain quantities that include those described below or others.  The bracketed number
following each quantity is recommended as the minimum for that quantity.  However, these quantities are
only guidelines and do not determine compliance.
—  Nesting levels of compound statements, iteration control structures, and selection control structures
[256].
—  Nesting levels of conditional inclusion [256].
—  Pointer, array, and function declarators (in any combination) modifying a class, arithmetic, or incom-
plete type in a declaration [256].
—  Nesting levels of parenthesized expressions within a full-expression [256].
—  Number of characters in an internal identifier or macro name [1 024].
—  Number of characters in an external identifier [1 024].
—  External identifiers in one translation unit [65 536].
—  Identifiers with block scope declared in one block [1 024].
—  Macro identifiers simultaneously defined in one translation unit [65 536].
—  Parameters in one function definition [256].
—  Arguments in one function call [256].
—  Parameters in one macro definition [256].
—  Arguments in one macro invocation [256].
—  Characters in one logical source line [65 536].
—  Characters in a string literal (after concatenation) [65 536].
—  Size of an object [262 144].

En buen cristiano: para conocer los limites de un compilador en particular habrá que revisar su documentación.

Un saludo
54  Programación / Programación C/C++ / Re: Calcula el cuadrado de un numero usando aritmetica de punteros en: 2 Abril 2015, 05:03 am
Código
  1. (a + sizeof(a[n])*n -a) / sizeof(int)
Por partes:

1) Ya que "a" se suma y luego se resta la quitamos de la expresión, queda "(sizeof(a[n]) * n) / sizeof(int)".
2) "sizeof(a[n])" es el numero de bytes necesarios para almacenar el array de tipo "int [n]".
3) Multiplicado por "n" es el numero de bytes necesario para almacenar "n" arrays de tipo "int [n]".
4) Para quitar al tipo int de la ecuación se divide por "sizeof(int)", con lo que terminamos con solo la multiplicación "n * n".

Un saludo
55  Programación / Programación C/C++ / Re: Ayuda errores, ejercicio dia, mes, año Codificación a C en: 2 Abril 2015, 03:53 am
Otro error (uno lógico) se encuentra en todos los condicionales de la función "testNOfDaysFebruary":
Código
  1. void testNOfDaysFebruary(void)
  2. {
  3.   if (nOfdaysfebruary(2016 != 29)){
  4.   /* ... */
  5.   if (nOfdaysfebruary(2014 != 28)){
  6.   /* ... */
  7.   if (nOfdaysfebruary(2000 != 29)){
  8.   /* ... */
  9.   if (nOfdaysfebruary(1600 != 29)){
  10.   /* ... */
  11. }
Sintácticamente son correctas pero tienen el efecto de llamar a la función "nOfdaysfebruary" con el valor cero como argumento.

Hay que sacar la comparación con las literales fuera de la lista de argumentos de la función:
Código
  1. void testNOfDaysFebruary(void)
  2. {
  3.   if (nOfdaysfebruary(2016) != 29){
  4.   /* ... */
  5.   if (nOfdaysfebruary(2014) != 28){
  6.   /* ... */
  7.   if (nOfdaysfebruary(2000) != 29){
  8.   /* ... */
  9.   if (nOfdaysfebruary(1600) != 29){
  10.   /* ... */
  11. }

Un saludo
56  Programación / Programación C/C++ / Re: Leer archivo de texto en: 2 Abril 2015, 03:30 am
Y si en caso de que el segundo dato no sea un entero, y sea un string? u otro tipo de dato?

 printf("%s %d %d/%d/%d\n", nombre, num, d, m, a);

Te marcaría error ya que %d hace referencia a que es un entero
Por partes (todo lo que sigue es en buen plan):

1) El valor de retorno de las funciones scanf/fscanf/sscanf es el numero de conversiones realizadas con éxito.
2) En mi programa de ejemplo se verifica que se puedan leer las cinco conversiones, para ello es tan sencillo como verificar que el valor de retorno de la función sea igual a ... cinco.
3) Cuando se encuentra una linea que no cumple con ese formato (y eso sucede con el ultimo elemento del array, la cadena "LINEA_SIN_EL_FORMATO_VALIDO") la función retorna algún otro valor, la condición:
Código
  1. sscanf(linea[i], " %[^#]#%d#%d/%d/%d", nombre, &num, &d, &m, &a) == 5
Resulta en el valor cero (falso en C) y con ello el bucle termina su ejecución.

----

por qué no mejor leer el texto entero como si fuese un string?, de esta manera
En su tercer mensaje el creador del tema (me refiero al usuario niraikanai ) indica que utiliza esa función para leer las lineas de texto:
Leo la linea con fgets. Por ejemplo fgets(linea, 80, pF)

Un saludo
57  Programación / Programación C/C++ / Re: Problema al generar los binarios de un archivo en: 1 Abril 2015, 18:23 pm
cuando intento hacerlo me dice que me faltan unas referencias a ciertas funciones de mi código y el problema es que no sé qué hacer, no sé cómo resolver esas referencias.
Con solo una captura va a ser difícil ayudarte.

En términos generales los pasos que se deben realizar en programación modular son:
1) Compilas cada unidad (extensión ".c") para generar el código objeto correspondiente (extensión ".o").
2) Mediante el compilador indicas todos los archivos de código objeto y el nombre del ejecutable.

Si en el segundo paso falta un archivo de código objeto se generan los mensajes de "undefined reference to ...", por supuesto ese mensaje se puede generar por otras razones.

En la captura tienes tres unidades pero solo se lista el código objeto de dos y en la linea de comandos al llamar a gcc solo se indica uno.

Un saludo
58  Programación / Programación C/C++ / Re: Problema en C con la funcion fread y fwrite en: 1 Abril 2015, 18:05 pm
La recomendación anterior se mantiene: no utilices feof, en su lugar verifica el valor de retorno de la función en turno. También utiliza nombres descriptivos para las variables, "algodon" no lo es.

----

El bucle de lectura lo puedes sustituir con una sola llamada a fread:
Código
  1. int num_regs; /* Numero de registros */
  2.  
  3. /* ... */
  4.  
  5. // Leer datos del fichero
  6. Agenda = fopen("agenda.dat", "rb");
  7. num_regs = fread(Datos, sizeof Datos[0], 100, Agenda);
  8. fclose(Agenda);
Con ella se le indica a la función que lea un máximo de 100 registros del archivo y los almacene a partir de la dirección indicada por "Agenda". El numero actual de registros leídos se almacena en la variable "num_regs".

En la misma linea el bucle de escritura se sustituye por la llamada a función:
Código
  1. // Escribir los datos en el fichero
  2. Agenda = fopen("agenda.dat", "wb");
  3. fwrite(Datos, sizeof Datos[0], num_regs, Agenda);
  4. fclose(Agenda);

----

Ya por ultimo cuando se desea leer un valor de tipo unsigned short el especificador de formato con scanf y familia es "%hu".

Un saludo
59  Programación / Programación C/C++ / Re: Duda con la matriz de cadena en C. en: 1 Abril 2015, 05:12 am
Primero comentas que el programa debe manejar los destinos, horario de salida y cupos disponibles, con esto se entiende que (por razones obvias) el origen siempre es el mismo.

Pero después indicas que se deben manejar las ciudades de origen y destino lo que me hace pensar mas en un programa sobre una agencia de viajes con todas las rutas disponibles.

¿Debes manejar solo el destino o ambos (origen y destino)?

Un saludo
60  Programación / Programación C/C++ / Re: Guardar Datos desde cmd en un txt en: 1 Abril 2015, 04:56 am
No. Significa que si quieres utilizar la función system en tu programa solo tienes que incluir el encabezado <stdlib.h>, ello funcionara sin importar el compilador utilizado.

Un saludo
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines