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

Parametros por referencia

Estas en el tema de Parametros por referencia en el foro de C/C++ en Foros del Web. Amigos del foro tengo un pequeño problema con un programa de parametros por referencia les mando mi estructura para que lo vean y si pueden ...
  #1 (permalink)  
Antiguo 21/10/2008, 17:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Parametros por referencia

Amigos del foro tengo un pequeño problema con un programa de parametros por referencia les mando mi estructura para que lo vean y si pueden ayudarme se los agradesco el problema es que no se si estan bien declarados los parametros por referencia tanto como en el procedimiento como en el progrma principal... Saludos cordiales.

/* El programa reune una serie de programas utilizando procedimientos*/
#include<stdio.h>
#include<conio.h>
#include<math.h>

void retiro(float &cuenta1 &cuenta2 &cuenta3)
{ //inicio del proceso de retiro

float retiro;
int numcue=0;

printf("\n**************************************** **********************");
printf("\n***Biemvenidos al sistema de cajeros del banco yuyin_elvago***");
printf("\n**************************************** **********************");
printf("\n\n***Estas en la operacion de retiros en efectivo***");
do //do1
{ //inicio del do1
printf("\n\n Ingresa tu numero de cuenta: ");
scanf("%d",&numcue);
} //fin del do1
while(numcue<=0);

switch(numcue)
{ //inicio del switch

case 111:
do //do2
{ //inicio del do2
printf("\n Ingresa el monto el monto de tu retiro: ");
scanf("%f",&retiro);
} //fin del do2
while(retiro<=0);


if(retiro <= cuenta1) //if1
{ // inicio del if1
cuenta1 = cuenta1 - retiro;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta1);
printf("\n***Tome su efectivo***");
} //fin del if1

else //else1
{ //inicio del else1
printf("\n\n***Susaldo no es suficiente para realizar la operacion***");
} //fin del else1
break;

case 112:
do //do3
{ //inicio del do3
printf("\n Ingresa el monto el monto de tu retiro: ");
scanf("%f",&retiro);
} //fin del do3
while(retiro<=0);

if(retiro <= cuenta1) //if2
{ // inicio del if2
cuenta2 = cuenta2 - retiro;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta2);
printf("\n***Tome su efectivo***");
} //fin del if2

else //else2
{ //inicio del else2
printf("\n\n***Susaldo no es suficiente para realizar la operacion***");
} //fin del else2
break;

case 113:
do //do4
{ //inicio del do4
printf("\n Ingresa el monto el monto de tu retiro: ");
scanf("%f",&retiro);
} //fin del do4
while(retiro<=0);

if(retiro <= cuenta1) //if3
{ // inicio del if3
cuenta3 = cuenta3 - retiro;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta3);
printf("\n***Tome su efectivo***");
} //fin del if3

else //else3
{ //inicio del else3
printf("\n\n***Susaldo no es suficiente para realizar la operacion***");
} //fin del else3
break;

default:

printf("\n\n***CUENTA NO EXISTE***");
} //fin del switch

} //fin del proceso de retiro



void deposito(float &cuenta1 &cuenta2 &cuenta3)
{ //inicio del proceso de deposito

float deposito;
int numcue=0;

printf("\n**************************************** **********************");
printf("\n***Biemvenidos al sistema de cajeros del banco yuyin_elvago***");
printf("\n**************************************** **********************");
printf("\n\n***Estas en la operacion de depositos en efectivo***");

do //do1
{ //inicio del do
printf("\n\n Ingresa tu numero de cuenta: ");
scanf("%d",&numcue);
} //fin del do
while(numcue<=0);


switch(numcue)
{ //inicio del switch

case 111:

printf("\n Ingresa el efectivo en la rejilla y luego");
do //do2
{ //inicio del do2
printf("\n Ingresa el monto el monto de tu deposito: ");
scanf("%f",&deposito);
} //fin del do2
while(deposito<=0);


cuenta1 = cuenta1 + deposito;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta1);

break;

case 112:
printf("\n Ingresa el efectivo en la rejilla y luego");
do //do3
{ //inicio del do3
printf("\n Ingresa el monto el monto de tu deposito: ");
scanf("%f",&deposito);
} //fin del do3
while(deposito<=0);

cuenta2 = cuenta2 + deposito;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta2);

break;

case 113:
printf("\n Ingresa el efectivo en la rejilla y luego");
do //do4
{ //inicio del do4
printf("\n Ingresa el monto el monto de tu deposito: ");
scanf("%f",&deposito);
} //fin del do4
while(deposito<=0);

cuenta3 = cuenta3 + deposito;

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta3);

break;

default:

printf("\n\n***CUENTA NO EXISTE***");
} //fin del switch


} //fin del proceso de deposito


void consulta(float &cuenta1 &cuenta2 &cuenta3)
{ //inicio del proceso consulta


int numcue=0;

printf("\n**************************************** **********************");
printf("\n***Biemvenidos al sistema de cajeros del banco yuyin_elvago***");
printf("\n**************************************** **********************");
printf("\n\n***Estas en la operacion de consulta de saldos***");

do //do1
{ //inicio del do
printf("\n\n Para conocer tu saldo");
printf("\n\n Ingresa tu numero de cuenta: ");
scanf("%d",&numcue);
} //fin del do
while(numcue<=0);


switch(numcue)
{ //inicio del switch

case 111:

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta1);

break;

case 112:

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta2);

break;

case 113:

printf("\n\n***Su transaccion se a realizado con exito***");
printf("\n Tu saldo es de Q. %7.2f",cuenta3);

break;

default:

printf("\n\n***CUENTA NO EXISTE***");
} //fin del switch


} //fin del proceso consulta

main()
{ //inicio del main

float cuenta1 = 50, cuenta2 = 100, cuenta3 = 150;
int opcion;

do
{ //inicio del do

printf("\n**************************************** ****************************");
printf("\n******Biemvenidos al sistema de cajeros del banco yuyin_elvago******");
printf("\n**************************************** ****************************");
printf("\n Para retiros en efectivo................................ingrese A");
printf("\n Para depositos monetarios...............................ingrese B");
printf("\n Para consultar su saldo.................................ingrese C");
printf("\n Para salir............................................. .ingrese ESC");
printf("\n\n Presione tecla para realizar opcion: ");
opcion = getch(); //capta el valor de una tecla y lo guarda en una variable

switch(opcion)
{ //inicio del switch

case 65:

retiro(float cuenta1,float cuenta2, float cuenta3);
printf("\n Presione enter para continuar");
getch();
clrscr();

break;

case 66:

deposito(float cuenta1,float cuenta2, float cuenta3);
printf("\n Presione enter para continuar");
getch();
clrscr();

break;

case 67:

consulta(float cuenta1, float cuenta2, float cuenta3);
printf("\n Presione enter para continuar");
getch();
clrscr();

break;

default :

printf("\n***TECLA NO CORRESPONDE A NINGUNA OPCION***");

} //fin del switch

} //fin del do
while(opcion!=27);
printf("\n***Usted salio del sistema adios***");

return 0;

} //fin del main
  #2 (permalink)  
Antiguo 22/10/2008, 21:35
 
Fecha de Ingreso: octubre-2008
Mensajes: 4
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Parametros por referencia

Te pongo un ejemplo de pasaje por referencia

void SumarUno (int & num) {
num++;
}


int main () {
int num = 0;

SumarUno (num);

return 1;
}

ahi le sumas uno a num
cualquier cosa aclarame un poco tu duda que vuelvo a contestar.
  #3 (permalink)  
Antiguo 23/10/2008, 05:42
Avatar de v4mp1r0  
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Parametros por referencia

a tu funcion retiro y consulta no le estas pasando los parametros por referencia, se los estas pasando por valor.

Código:
retiro(float cuenta1,float cuenta2, float cuenta3);
Para pasarlos por referencia debes pasarlos con un ampersand (&) a la funcion y esta debe recibirla con un asterisco *.

Mejorando el ejemplo de asfreng, quedaria como:

Código:
void SumarUno (int *num) {
  *num++;
}

int main () {
  int num = 0;

  SumarUno (&num);

  return 0;
}
Fijate que no es necesario pasarle el tipo de la variable a la funcion, puesto que esta la recibe con el tipo ya definido. Ademas en todos lados donde aparesca la variable pasada por referencia debe ir acompañada del asterisco.

Vuelvete a revisar el paso de parametros a funciones para que te quede mas claro, estas haciendo todos los pasos a las funciones mal (le pasas el tipo de dato y ademas las estas pasando por valor).

salu2!
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 21:40.