Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Devolver direccion de un elemento N de un array

Estas en el tema de Devolver direccion de un elemento N de un array en el foro de C/C++ en Foros del Web. buenas,practicando para un exmanen, encontre este ejercicio: Cita: Dado un puntero p que almacena la dirección de memoria del primer elemento de un vector de ...
  #1 (permalink)  
Antiguo 28/05/2012, 18:11
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Devolver direccion de un elemento N de un array

buenas,practicando para un exmanen, encontre este ejercicio:

Cita:
Dado un puntero p que almacena la dirección de memoria del primer elemento de un vector de n
elementos enteros, construir una función dirNulo para que la llamada a dirNulo(p, n)
devuelva la dirección de memoria del primer elemento del vector que sea igual a 0. Si no hay ningún
elemento igual a 0 entonces la función debe devolver el valor NULL.
Este es el codigo que eh escrito:

Código:
#include <stdio.h>
#include <stdlib.h>


int *dirnulo(int *p,int n){
	int i;
	for (i=0;i<n;i++){
		if (p[i]==0){
			
			return &p[i];
		}
		else {return p=NULL;}
	}
	

}

int main (){
	int linea[7],j;
	printf("poner 7 numeros\n");
	scanf("%i",linea);
	
	dirnulo(linea,7);
	for (j=0;j<7;j++){
		printf("elemento %i : %p\n",j+1,&linea[j]);
	}
	printf("elemento con 0 :%p\n",dirnulo);
	system("pause");

}
queria saber si la direccion q me devolvia era la correcta, x eso puse en pantalla la direccion de todos los componentes del array, pero no salen iguales. Se que e puesto alguna garrafada horrible en algun lado, pero no puedo encontrarla, alguien podria hecharme una mano? gracias d antemano por tomarse el tiempo.
  #2 (permalink)  
Antiguo 28/05/2012, 19:12
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Devolver direccion de un elemento N de un array

Para empezar la funcion tiene un error:

Código C:
Ver original
  1. int *dirnulo(int *p,int n){
  2.     int i;
  3.     for (i=0;i<n;i++){
  4.         if (p[i]==0){
  5.             return &p[i];
  6.         }
  7.     }
  8.     return NULL;
  9. }

El return NULL tiene que estar al final de la funcion, fuera del for.

Por otro lado, en el main nunca cargas elementos en el array. Ademas, ejecutas la funcion dirNulo pero nunca capturas su valor.

Código C:
Ver original
  1. int main (){
  2.     int linea[7],j  , * p;
  3.     printf("poner 7 numeros\n");
  4.         for (j=0;j<7;j++) scanf("%d",&linea[i]);
  5.    
  6.     p = dirnulo(linea,7);
  7.     for (j=0;j<7;j++){
  8.         printf("elemento %i : %p\n",j+1,&linea[j]);
  9.     }
  10.     printf("elemento con 0 :%p\n",*p);
  11.     system("pause");
  12.  
  13. }

Espero que te sirva
  #3 (permalink)  
Antiguo 28/05/2012, 21:43
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Devolver direccion de un elemento N de un array

Hola! por lo q entiendo del enunciado a dirNulo le tenes q pasar el puntero "p"(se q es lo mismo pasar "linea" pero por ahi es para practica :P)
Código C:
Ver original
  1. main() {
  2. int *p=linea;
  3. p=dirNulo(p,n);
  4. ........
  5. }

Saludos

Etiquetas: devolver, direccion, elemento, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:42.