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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Paso de parametros por referencia...funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Paso de parametros por referencia...funciones  (Leído 3,265 veces)
soser

Desconectado Desconectado

Mensajes: 44


...


Ver Perfil
Paso de parametros por referencia...funciones
« en: 2 Septiembre 2010, 05:12 am »

Bueno, pues la duda que tengo es sobre el paso de parametros por referencia, trato de hacer un programa que simule el funcionamiento de una pila y una cola con funciones del tipo void, es decir incremento el tope(que en si es el puntero) para asi determinar pero pues no me hace nada, este es el codigo, me podrian decir si mi codigo esta mal o tal vez planteo mal la logica...como digo el problema es con el puntero, quiero que se incremente el valor de i en 1 para indicar el tope pero pues no mas no quiere...
Código:
//programa que simula el funcionamiento de una pila y una cola
#include<stdio.h>
void insertar(int pico[],int *i,int ele)
{
pico[*i]=ele;
*i++;
}
int borra(int pila[],int *i)
{
int x,y;
x=*i;
y=pila[x];
*i--;
return y;
}
int main()
{
int pila[8];
int cola[8];
int i,j,opc,ele,h;

printf("Ingresa 5 elementos para la pila:\n ");
for(i=0;i<5;i++)
{
scanf("%d",&pila[i]);
}
printf("\n\n");
printf("Ingresa 5 elementos para la cola:\n");
for(j=0;j<5;j++)
{
scanf(" %d",&cola[j]);
}
do{
printf("---Selecciona una opcion---\n");
printf("1.Insertar un elemento en la pila\n");
printf("2.Insertar un elemento en la cola\n");
printf("3.Eliminar un elemento en la pila\n");
printf("4.Eliminar un elemento de la cola\n");
printf("5.Mostrar pila\n");
printf("6.Mostrar cola\n");
printf("7.Pila llena\n");
printf("8.Cola llena\n");
scanf(" %d",&opc);
switch(opc)
{
case 1:
printf("Ingresa elemento a insertar:\n");
scanf(" %d",&ele);
if(i<8){
insertar(pila,&i,ele);
for(h=0;h<i;h++)
{
printf("%d",pila[h]);
}
}
printf("\n\n");
break;

case 2:
printf("Ingresa elemento a insertar:\n");
scanf(" %d",&ele);
if(i<8){
insertar(cola,&j,ele);
for(h=0;h<j;h++)
{
printf("%d",cola[h]);
}
}
printf("\n\n");
break;

case 3:
printf("Se eliminara elemento\n");
ele=borra(pila,&i);
printf("El elemento borrado de la pila fue%d\n\n",ele);
break;

default:
if(opc!=0)
printf("Nunca mencione tener esa opcion...\n");
}

}while(opc!=0);


}
como veran aun no esta terminado pero pues aun asi...
desde ya, gracias...


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Paso de parametros por referencia...funciones
« Respuesta #1 en: 2 Septiembre 2010, 14:43 pm »

¡Buenas!

Me parece que el misterio esta en la precedencia de los operadores. ++ y -- tienen mayor prioridad que *, por lo tanto, al hacer:
Código
  1. *ptr++;
  2.  
primero incrementa el puntero y luego lo desreferencia.

Esto lo arreglas con unos parentesis:
Código
  1. (*ptr)++;
  2.  
y el problema se soluciona.

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
soser

Desconectado Desconectado

Mensajes: 44


...


Ver Perfil
Re: Paso de parametros por referencia...funciones
« Respuesta #2 en: 2 Septiembre 2010, 22:33 pm »

Gracias... problema solucionado...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines