Ayuda con Punteros en C.

Iniciado por camv123, 20 Abril 2014, 00:21 AM

0 Miembros y 1 Visitante están viendo este tema.

camv123

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


#include <stdio.h>

int* tarea_A()
{
int i;
int j;
int pares[500];
for(i=0; i<=500; i++)
{
pares[i]=i*2;

}


}

int* tarea_B()
{
int i;
int j;
int impares[500];
for(i=1; i<=500; i++)
{
impares[i]=(i*2)-1;

}

}


void tarea_C()
{
int* ptr_A = 0;
int* ptr_B = 0;

ptr_A = tarea_A();
ptr_B = tarea_B();

printf("OK %d \n ", *ptr_A);/*se supone que me debe de imprimir un numero-\*/
/*Aca estoy probando a ver si puedo imprimir los numeros*/
}

int main()
{
tarea_C();
}



amchacon

No estas retornando nada en A y B.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

P3RV3RT

#2
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:
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.

camv123

#3
OK Me pondré a ello. Luego les cuento como me fue. En fin de todas formas gracias. Luego pongo el codigo hecho :)