Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#211
Hola, gente.
Nuevamente con cositas que no puedo resolver consultando al amigo Google, de la manera como está planteado el programa ¿es imposible liberar la memoria asignada al puntero arr?, el manual aconseja que nunca se reserve memoria de esta manera, pero aunque sea para tener un conocimiento más, es realmente cierta mi pregunta. -

#include <stdio.h>
#include <stdlib.h>

int *asignar_Array(int size, int valor);

int main( void ){
size_t i;
int *vector = asignar_Array(5,45);

for( i=0; i<5; i++ ){
printf("\n %d", vector[i]);
}

free(vector);

return (EXIT_SUCCESS);
}

int *asignar_Array(int size, int valor) {
size_t i;
int *arr = (int*)malloc( size * sizeof(int ));

for( i=0; i<size; i++ ) {
arr[i] = valor;
}

return arr;
}



Saludos.
#212
MAFUS, como siempre muchas gracias por tus aportes. -

Saludos.
#213
Hola, ivancea96.
Bien, NULL hace que el puntero no apunte a un dato valido, de esta manera, nos aseguramos que si accidentalmente invocamos a este puntero no apunte a la dirección que reservamos con malloc (que contendrá basura), espero estar acertado en este concepto. -
En cuanto a lo que hace free() parase un poco más complejo, voy a seguir leyendo para saber el porqué de tanto énfasis del libro en lo utilizar free() a secas y utilizar la función que se sugiere en el mismo. -

Gracias a ambos por ocuparse.
Saludos.
#214
Hola, gente.
Lo que me trae en este caso es una duda con la función free, con el libro que estoy estudiando punteros a cada instante remarca que la función free es insegura, no pongo aquí los argumento porque necesitaría 2 post, la pregunta es ¿por su experiencia consideran que esto es cierto?, debería utilizar la función que dejo a continuación o es esto una falacia. -

#include <stdio.h>
#include <stdlib.h>

#define safeFree(p) saferFree((void**)&(p))

void saferFree(void **pp);

int main( void ){
int *pi;
pi = (int*) malloc(sizeof(int));
*pi = 5;

printf("\n Antes.....: %p\n",pi);

safeFree(pi);

printf("\n Despues...: %p\n",pi);

safeFree(pi);

return (EXIT_SUCCESS);

}

void saferFree(void **pp) {
if (pp != NULL && *pp != NULL) {
free(*pp);
*pp = NULL;
}
}


Saludos.
Daniel
#215
Hola.
vaya manera de menospreciarme amigo Geeke, te imaginaras si estoy urgndo en como hace ciertas cosas los compiladores debería tener conocimiento de tú código, no te parece.
Igual muchas gracias por ocuparte y como a MAFUS me has arrancado una sonrrrisa.-

Un abrazo.
Daniel
#216
Hola MAFUS. -
Gracias por ocuparte, tengo bastante claro como funciona todo, en definitiva, si no me contestaron ivancea96, AlbertoBSD, engel lex, no debe haber otra manera de lograr lo mismo, aunque mi subconsiente me dice que si, no creo que el compilador utilice esta fórmula. -
Seguiremos investigando.-

Un abrazo.
Daniel
#217
Hola gente.
Como veo que por allí MAFUS hizo un desafío, bueno esto es algo parecido solo que yo no tengo suficientes conocimientos para desafiar a nadie, la consulta es ¿conocen otra manera para logrear lo mismo?.-

#include<stdio.h>

int main( void ){
int numero = 12345, i, b = 1, temp = 0, x;

for( i = 0; i < 32; i++ ){
temp += numero & b;
x = numero & b;
if( x > 0 ) printf("\n bit encendido ==> [%2d] = %d", i, x);
b <<= 1;
}

printf( "\n\n La direccion de memoria %p contiene el valor %d\n\n", &numero, temp );

return 0;
}


Cuando el número es positivo, el simple pero cuando es negativo se me complica un poco entenderlo.-




Saludos.
Daniel
#218
Hola.
Perdón por interponerme pero el código de boctulus me da resultados correctisimos, medido con un reloj de una página de internet, correctisimos. -

Solo que lo hago como dijo MAFUS, en segundos. -

printf( "\n Segundos transcurridos.....: %f s\n", 1.0*(clock()-  comienzo)/(double)CLOCKS_PER_SEC );

Saludos.
Daniel
#219
Programación C/C++ / Re: Cuadrado en c++
14 Abril 2016, 18:35 PM
Hola.
Espero que por lo menos él mío lo pongan en segundo lugar. - :D :D :D

Daniel.
#220
Programación C/C++ / Re: Cuadrado en c++
14 Abril 2016, 03:30 AM
Hola .-
Si interprete correctamente lo que necesitas el siguiente programa logra el cometido, solo que está hecho en c, pasarlo a c++ debe ser tan simple como respirar. -

Vacio.
#include<stdio.h>

int main( void ){
int i = 0, b = 0, c = 0;

while( i < 20 ){
if( i == 19 && b == 0 ){
i = 0; b = 1;
}
if(  i == 19 && b == 1 ){
i = 0; b = 0;
printf("\n 5 5");
}
if( b == 0 )
printf(" 5");
else
printf( "\n 5                                   5" );

i++; c++;
if( c == 55 )
break;
}

return 0;
}




Lleno.

#include<stdio.h>

int main( void ){
int i = 0, c = 0;

while( i < 20 ){
if ( i == 19 ){
c++; i = 0; printf("\n");
}
if( c == 19 )
break;

printf("5");
i++;
}

return 0;
}


Saludos.
Daniel