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

 

 


Tema destacado:


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6 7 8 9 10
41  Programación / Programación C/C++ / Pasar a función un arreglo con punteros o con el nombre del arreglo como puntero en: 9 Junio 2016, 03:02 am
Hola, gente.
Les dejo un ejemplo de lo que digo en el enunciado y la pregunta es ¿hay alguna diferencia en hacerlo de una manera u otra?, los consulto porque me parece que en ningún Ej. vi como lo hago en la segunda llamada a la función. -

Código
  1. #include <stdio.h>
  2.  
  3. void vector_(int *vt );
  4.  
  5. int main(void) {
  6. int vector[] = {1, 2, 3, 4, 5}, *vt = vector;
  7.  
  8. vector_(vt);
  9. printf( "\n" );
  10. vector_(vector);
  11.  
  12. return 0;
  13.  
  14. }
  15.  
  16.  
  17. void vector_(int *vt ){
  18. size_t i;
  19. for( i=0; i<5; i++){
  20. printf("\n %d", *(vt+i));
  21. }
  22. }
  23.  
Saludos.
42  Programación / Programación C/C++ / Matriz de punteros, duda al liberar memoria[C] en: 8 Junio 2016, 02:51 am
Hola, amigos. -
La duda es ¿debo liberar la memoria con un bucle o simplemente liberar el primer puntero?, lo que me sucede es que no me da ningún error, pero no tengo manera de comprobar si esto es correcto, por lo menos por mis escasos conocimientos de memoria dinámica desconozco cómo podría comprobarlo. -   
Con el barullo que tengo de tantas cosas nuevas no sé si logro hacerme entender, valga el intento. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define safeFree(p) saferFree((void**)&(p))
  5.  
  6. void ingreso( void );
  7. void imprimir( int numeros[], size_t contador );
  8. void saferFree( void **pp );
  9.  
  10. int main( void ){
  11.  
  12. ingreso();
  13.  
  14. return 0;
  15. }
  16.  
  17.  
  18. void ingreso( void ){
  19. size_t contador=0, ingreso, ch, ok;
  20. int *numeros=NULL, *tmpNumeros=NULL;
  21.  
  22. do{
  23. do{
  24. printf( "\n Ingrese un numero [0 para finalizar]....:");
  25. ok = scanf( "%lu", &ingreso ) == 1 && ingreso >=0;
  26. while( (ch = getchar()) != '\n' && ch != EOF );
  27. }while( !ok );
  28.  
  29. contador++;
  30. tmpNumeros = (int *)realloc( numeros, contador * sizeof(int) );
  31. if( tmpNumeros != NULL ){
  32. numeros = tmpNumeros;
  33. numeros[contador-1] = ingreso;
  34. }
  35. else{
  36. safeFree( numeros );
  37. puts( "Error en asignar memoria....." );
  38. exit(1);
  39. }
  40.  
  41. }while( ingreso >= 1 );
  42.  
  43. imprimir( numeros, contador );
  44. safeFree( numeros );
  45. }
  46.  
  47. void imprimir( int numeros[], size_t contador ){
  48. size_t i;
  49.  
  50. for(i=0; i<contador-1; i++){
  51. printf( "\n %d", numeros[i] );
  52. }
  53. }
  54.  
  55. void saferFree(void **pp) {
  56. if (pp != NULL && *pp != NULL) {
  57. free(*pp);
  58. *pp = NULL;
  59.        }
  60. }
Debo aclarar que el código es casi todo mío por eso no puedo averiguarlo en el libro con el que estoy estudiando. -
Saludos.


43  Programación / Programación C/C++ / ¿Las matrices se pasan a las funciones por valor o referencia? [C] en: 4 Junio 2016, 16:50 pm
Hola, gente.

Citar
Passing a One-Dimensional Array
When a one-dimensional array is passed to a function, the array’s address is passed by
value. This makes the transfer of information more efficient since we are not passing
the entire array and having to allocate memory in the stack for it. Normally, this means
the array’s size must be passed. If we don’t, from the function’s perspective all we have
is the address of an array with no indication of its size.

Los consulto porque tengo una duda con esta parte del libro, si mi traductor no falla dice que las matrices se pasan a funciones por valor, yo tengo entendido que el identificador de una matriz contiene la dirección de memoria del primer elemento o primer byte de la misma, por lo tanto, cualquier modificación que se efectué en la función llamada se ve reflejado en la función llamadora como lo refleja el código que dejo a continuación. -

Código
  1. #include <stdio.h>
  2.  
  3. void ab( int a[], size_t tam );
  4.  
  5. int main( void ){
  6. int a[] = {5, 3, 8, 99, 11};
  7. size_t tam = 5;
  8.  
  9. printf( "\n \"a\" antes de la llamada a la funcion vale........:%d", a[0] );
  10. ab(a, tam);
  11. printf( "\n \"a\" despues de la llamada a la funcion vale......:%d\n\n", a[0] );
  12.  
  13.  
  14. }
  15.  
  16. void ab( int a[], size_t tam ){
  17. a[0] = 1;
  18. }
  19.  
Es todo, espero que alguien me diga como debo interpretar esto. -   

Saludos.
44  Programación / Programación C/C++ / Arreglo con memoria dinámica en lenguaje C. en: 24 Mayo 2016, 19:45 pm
Hola, gente. -
Dejo aclarado que son mis inicios con memoria dinámica y puedo estar preguntando cualquier sandez, hay 2 cosas que me tienen intrigado:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main( void ){
  5. float *V=NULL;
  6. int N=0,i,ch;
  7. char c;
  8.  
  9. do {
  10. V=( float *)realloc((float *)V,(N+1)*sizeof(float));
  11. printf("\n Ingresa un numero real.................: ");
  12. scanf("%f", &V[N]);
  13. while((ch = getchar()) !='\n' && ch!=EOF);
  14. printf("\n Quieres introducir otro valor? (S/N)...: ");
  15. c=getchar();
  16. N++;
  17. }while (c=='s' || c=='S');
  18.  
  19. for(i=0;i<N;i++)
  20. printf("\n El valor %d es igual a..................: %f\n", i, V[i]);
  21.  
  22. free(V);
  23.  
  24. return 0;
  25. }

Código
  1.     V=( float *)realloc((float *)V,(N+1)*sizeof(float));

En los pocos ejemplos que vi no me parece que estuviera 2 veces en la misma línea el puntero (V) y la otra es ¿no se debería asignar primero con malloc y luego reasignar con calloc? (malloc fuera del bucle do while). -

Es todo, espero me ayuden a aclarar esto. -
Saludos.
45  Sistemas Operativos / GNU/Linux / Aviso de llegada de correo electrónico en casilla de Yahoo. en: 23 Mayo 2016, 20:58 pm
Hola, gente.
Alguien conoce algún programa o extensión para Firefox que avise cundo llega un nuevo correo a Yahoo

Desde ya muchas gracias por vuestro tiempo. -
Saludos.
46  Programación / Programación C/C++ / Demostración de porque los punteros se pasan a función por valor.[C] en: 22 Mayo 2016, 18:10 pm
Hola gente.
No quería molestarlos por esta nimiedad pero en realidad no logro realizar el código correcto para demostrarlo, en todos los manuales dice que los punteros se pasan a las funciones por valor, ¿es este un Ej. correcto para demostrarlo? porque estoy pasando el puntero y en main se modifica el valor al pasar un puntero a la función, y en el otro caso es correcto porque estoy pasando la variable "a" por referencia pasando la dirección de memoria.-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void funcionCp(int *q);
  5. void funcionDm(int *q);
  6.  
  7.  
  8. int main( void ){
  9. int a=100, *p = &a;
  10.  
  11. funcionCp(p);
  12.  
  13. printf("\n Variable *p = %d", *p);
  14.  
  15. funcionDm(&a);
  16.  
  17. printf("\n Variable *p = %d", *p);
  18.  
  19. return 0;
  20. }
  21.  
  22. void funcionCp(int *q) {
  23. *q+=1;
  24. }
  25.  
  26. void funcionDm(int *q) {
  27. *q+=1;
  28. }

Saludos.
47  Programación / Programación C/C++ / Borrar pantalla y cambiar posición del cursor sin librerías externas[C] en Linux en: 20 Mayo 2016, 17:26 pm
Hola.
El programa que dejo a continuación funciona perfectamente en Linux pero no en Windows, la primera línea borra la pantalla y la segunda cambia la posición del cursor. -
La pregunta es ¿conocen algo tan sencillo como esto para hacer lo mismo en Windows?, sin utilizar bibliotecas externas o el API de Windows. -
Solo que las coordenadas no las puedo hacer funcionar utilizando los valores insertados en una variable, estoy practicándolo. -

Código
  1. int x = 10, y = 10;
  2. printf("\033[x;yH");
  3.  

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main( void ){
  5.  
  6. printf("\033[2J\033[1;1H");
  7. printf("\033[10;10H");
  8.  
  9. printf( "\n Pulse una tecla para cambiar la posicion del cursor en pantalla..." );
  10.  
  11. printf("\033[2J\033[1;1H");
  12. printf("\033[1;1H");
  13. printf( "\n Ahora estoy en otro lugar..." );
  14.  
  15.  
  16. return 0;
  17. }

Eternal , Littlehorse desconozco la legalidad en los foros por ello si necesitan la fuente me lo dicen y la posteo.- 

Saludos.
48  Programación / Programación C/C++ / Que diferencia hay en utilizar bucle for o while en lenguaje C. en: 19 Mayo 2016, 19:22 pm
Hola a todos.
Bueno esa es mi intriga, estoy haciendo un programa para practicar y note que tiene más de 10 bucles y sin pensar demasiado los hice todos con while, quisiera saber si esto de utilizar uno u otro pude afectar la memoria como a la velocidad del programa. -

Saludos.
49  Programación / Programación C/C++ / Calculadora que acepta 100 dígitos. hecha en lenguaje C. en: 13 Mayo 2016, 20:23 pm
Hola.
Estoy realmente trabado con esto, hace más de 2 días que le doy vueltas (tire unas 30 hojas oficio) al asunto y nada, como estoy a punto de abandonarlo por unos días me dije seguramente en ese foro debe haber mentes iluminadas que me puedan tirar una soga. - :huh: :huh: :huh:
Para comenzar, les dejo unos posibles ingresos que se pueden dar, la pregunta es: ¿alinearían las 2 cifras con respecto al punto o lo harían directamente? -

Se trata de la opción: Sumar

123.45  ==> 123.45
6.5                    6.5

12.34     ==>       12.34
1234.56            1234.56

1234.56  => 1234.56
123                123

Si desean no poner código no importa, solo necesitaría un poco de pseudocódigo para aclarar un poco el panorama.-

Saludos.
50  Programación / Programación C/C++ / Inicializar cadena de caracteres en lenguaje C. en: 12 Mayo 2016, 21:38 pm
Hola, gente.
Después de declarar una cadena de caracteres en C ¿se puede inicializar todos los elementos a cero, sin tener que realizarlo a través de un bucle?. -

Saludos.
Páginas: 1 2 3 4 [5] 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines