Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: camv123 en 20 Abril 2014, 00:21 am



Título: Ayuda con Punteros en C.
Publicado por: camv123 en 20 Abril 2014, 00:21 am
Hola pues no soy muy bueno para usar punteros. Veran tengo que realizar un programa que me conste de tres tareas:

La tarea 1 genera los primeros 500 numeros pares.(0,2,4,6,...1000)
La tarea 2 genera los primeros 500 numeros impares.(1,3,5,7,...999)
La tarea 3 imprime los numeros generados por las dos tareas anterioresen orden (0,1,2,3,4,5...1000).

Mi idea es usar punteros, pues lo que se es que una funcion en C no puede retornar un array, sino un puntero. Hasta ahora tengo esto



Esto es lo que tengo hasta ahora. Se supone que tarea_A y tarea_B me generan dos punteros.
Luego, en que estoy mal????

Código
  1. #include <stdio.h>
  2.  
  3. int* tarea_A()
  4. {
  5. int i;
  6. int j;
  7. int pares[500];
  8. for(i=0; i<=500; i++)
  9. {
  10. pares[i]=i*2;
  11.  
  12. }
  13.  
  14.  
  15. }
  16.  
  17. int* tarea_B()
  18. {
  19. int i;
  20. int j;
  21. int impares[500];
  22. for(i=1; i<=500; i++)
  23. {
  24. impares[i]=(i*2)-1;
  25.  
  26. }
  27.  
  28. }
  29.  
  30.  
  31. void tarea_C()
  32. {
  33. int* ptr_A = 0;
  34. int* ptr_B = 0;
  35.  
  36. ptr_A = tarea_A();
  37. ptr_B = tarea_B();
  38.  
  39. printf("OK %d \n ", *ptr_A);/*se supone que me debe de imprimir un numero-\*/
  40. /*Aca estoy probando a ver si puedo imprimir los numeros*/
  41. }
  42.  
  43. int main()
  44. {
  45. tarea_C();
  46. }
  47.  



Título: Re: Ayuda con Punteros en C.
Publicado por: amchacon en 20 Abril 2014, 01:12 am
No estas retornando nada en A y B.


Título: Re: Ayuda con Punteros en C.
Publicado por: P3RV3RT en 20 Abril 2014, 01:32 am
Hola amigo, antes de nada, tienes que acostumbrarte a darle nombres "reconocible" a tus variables y funciones...  ( Podrias usar LosPares, LosImpares, y MostrarNumeros) en tus funciones...

Y te recomiendo no usar funciones punteros... sino pasar un array como parametro, y devolverlo. Un array es conjunto de numeros del mismo tipo y estan todos a x bytes del otro respectivamente... en tu caso, estan todos a 4bytes.

Tus "ForLoops" están mal. Porque? Bueno...
El primero empieza de 0 a 500, eso es un total de 501 numeros. Tu array soporta un maximo de 500.  Tendrias que usar esto:
Código:
for (int i = 0; i < 500; i++){
Pares[i] = (i * 2);}

Lo mismo pasa con la otra funcion.
Ahora, suponiendo que estas usando int Tarea_A(int* Pares) como funcion y no int* Tarea_A(); Tendrás que devolver (return *Pares) al final de la funcion.

Y Ultimo, en la funcion Tarea_C, tendras que crear dos arrays de tipo int que pasaras en la funcion... y un for loop para mostrar x numeros

Bueno, aqui tienes tu codigo mejorado y funcionando, si tienes mas duda, pregunta...

EI: no hace falta dejarle el codigo, que haga algo el.


Título: Re: Ayuda con Punteros en C.
Publicado por: camv123 en 20 Abril 2014, 02:03 am
OK Me pondré a ello. Luego les cuento como me fue. En fin de todas formas gracias. Luego pongo el codigo hecho :)