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

[SOLUCIONADO] Clases compuestas y arreglos tipo objeto

Estas en el tema de Clases compuestas y arreglos tipo objeto en el foro de C/C++ en Foros del Web. Hola a todos actualmente estoy desarrollando una "aplicacion de win32" con Visual Studio en lenguaje C++. en si la aplicacion simula un sistema bancario, pero ...
  #1 (permalink)  
Antiguo 23/11/2014, 19:59
Avatar de lausanchez  
Fecha de Ingreso: noviembre-2014
Ubicación: San Pedro Sula, Cortes
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Clases compuestas y arreglos tipo objeto

Hola a todos
actualmente estoy desarrollando una "aplicacion de win32" con Visual Studio en lenguaje C++.

en si la aplicacion simula un sistema bancario, pero me he quedado atascada en una parte.. retorno un valor tipo double a una funcion.. pero esta función no me toma ese valor

he aqui mi codigo:

// proyecto1.cpp: define el punto de entrada de la aplicación de consola.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;
class Banco {
public:
long long numcuenta;
string nombrecliente, nombrebeneficiario;
double saldoinicial;

Banco (){
saldoinicial=0;
cout<<"constructor"<<endl;
}
};

const int MAX_CUENTAS=2;
class Cuenta{
public:
Banco cuentas[MAX_CUENTAS];
int cont, acum;
double monto;

double saldo;

Cuenta(){
cont=0;
acum=1;
monto=0;
saldo=0;
}


double CrearCuenta(void){

cout<<"=========================================== ======="<<endl;
cout<<"CREAR CUENTA"<<endl;
cout<<"=========================================== ======="<<endl;
for(cont=0; cont<MAX_CUENTAS; cont++){
cout<<"Ingrese Numero Cuenta: "<<endl;
cin>>cuentas[cont].numcuenta;
cin.ignore(100,'\n');
cout<<"Ingrese Nombre Cliente: "<<endl;
getline(cin,cuentas[cont].nombrecliente);
cout<<"Ingrese Nombre Beneficiario: "<<endl;
getline(cin,cuentas[cont].nombrebeneficiario);
cout<<"Saldo Inicial: ";
cin>>cuentas[cont].saldoinicial;

cout<<"===!Cuenta creada exitosamente!==="<<endl<<endl;
cout<<cuentas[cont].saldoinicial;
}
return cuentas[cont].saldoinicial; //retorno el atributo
}

double recibirdato( double saldoinicial){
//esta funcion lo recibe
cout << "Ingrese el monto: ";;
cin >> monto;
saldo = saldo + monto;
cout<<"el saldo inicial era :"<<saldoinicial<<endl;
return saldo;
;
}

void Depositos(){
long long _cuenta;

int ind;
bool existe = false;
cout<<"=========================================== ======="<<endl;
cout<<"DEPOSITOS"<<endl;
cout<<"=========================================== ======="<<endl;

cout<<"Ingrese numero de cuenta"<<endl;
cin>>_cuenta;

for(ind=0; ind<MAX_CUENTAS; ind++){
if(cuentas[ind].numcuenta == _cuenta){
existe=true;
break;
}
}
if (!existe){
cout<<"Cuenta no existe"<<endl;
system("PAUSE");
return;
}

recibirdato(saldo);
cout <<"El saldo es: "<<saldo;
//pero no me muestra el saldo correcto.. saldoinicial aparece en 0
system("PAUSE");
return;
}



Que estoy haciendo mal, es un problema de sintaxis, un problema logico, les agradeceria enormente si me ayudaran y despejaran mi mente! Please
  #2 (permalink)  
Antiguo 24/11/2014, 02:56
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Clases compuestas y arreglos tipo objeto

Código C++:
Ver original
  1. recibirdato(saldo);
  2. cout <<"El saldo es: "<<saldo;

Si "recibirDato" tiene un return, lo que tienes que hacer es capturar el valor de retorno de la función.

El problema es que "saldo" se está pasando por valor, no por referencia ni por punteros. Debido a esto, "recibirDato" recibe una "copia" de saldo, si ésta función modifica su copia, la variable "saldo" original no se va a enterar, ya que no guardan ninguna relación entre ellas... por eso se recurre al "return":

Código C++:
Ver original
  1. cout <<"El saldo es: "<< recibirdato(saldo);

ó

Código C++:
Ver original
  1. double nuevoSaldo = recibirdato(saldo);
  2. cout <<"El saldo es: "<< nuevoSaldo;

Un saludo.
  #3 (permalink)  
Antiguo 24/11/2014, 12:24
Avatar de lausanchez  
Fecha de Ingreso: noviembre-2014
Ubicación: San Pedro Sula, Cortes
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Busqueda Respuesta: Clases compuestas y arreglos tipo objeto

Hola Eferion,
Gracias ya me aparece el saldo correcto..
pero tengo otro problemita con el saldo inicial.. que se le pide al usuario, este esta siendo declarado en otra clase, retorno el valor pero luego cuando lo recibo... me aparece el 0 :C

checa esto:

double CrearCuenta(void){
cout<<"=========================================== ======="<<endl;
cout<<"CREAR CUENTA"<<endl;
cout<<"=========================================== ======="<<endl;
for(cont=0; cont<MAX_CUENTAS; cont++){
cout<<"Ingrese Numero Cuenta: "<<endl;
cin>>cuentas[cont].numcuenta;
cin.ignore(100,'\n');
cout<<"Ingrese Nombre Cliente: "<<endl;
getline(cin,cuentas[cont].nombrecliente);
cout<<"Ingrese Nombre Beneficiario: "<<endl;
getline(cin,cuentas[cont].nombrebeneficiario);
cout<<"Saldo Inicial: ";
cin>>cuentas[cont].saldoinicial;
aqui almaceno el saldoinicial que digita el usuario por ejemplo 500

cout<<"===!Cuenta creada exitosamente!==="<<endl<<endl;
}
return cuentas[cont].saldoinicial; //aqui retorno ese valor
}



double recibirdato( double saldoinicial){
//esta funcion lo recibe paraa hacer la siguiente operacion
cout << "Ingrese el monto: ";;
cin >> monto;
cout<<"el saldo inicial era :"<<saldoinicial<<endl; //aqui solo muestro en pantalla el valor que el usuario digito en este caso es 500, ese valor deberia mostrarme en pantalla pero me muestro valor 0
:(

saldo = saldoinicial + monto; //esta es la operacion que suma el saldoinicial mas el monto depositado
return saldo; //retorno ese valor

}



void Depositos(){

long long _cuenta;

int ind;
bool existe = false;
cout<<"=========================================== ======="<<endl;
cout<<"DEPOSITOS"<<endl;
cout<<"=========================================== ======="<<endl;

cout<<"Ingrese numero de cuenta"<<endl;
cin>>_cuenta;

for(ind=0; ind<MAX_CUENTAS; ind++){
if(cuentas[ind].numcuenta == _cuenta){
existe=true;
break;
}
}
if (!existe){
cout<<"Cuenta no existe"<<endl;
system("PAUSE");
return;
}


double nuevoSaldo = recibirdato(saldo);
cout <<"El saldo actual es: "<< nuevoSaldo<<endl;
//aqui deberia aparecerme los 500 que era el saldoinicial, mas el monto que el usuario ingreso... pero solo me aparece el monto.... no me trae consigo el saldoincial..


system("PAUSE");
return;
}
};


Sugerencias, consejos Eferion
  #4 (permalink)  
Antiguo 24/11/2014, 15:37
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Clases compuestas y arreglos tipo objeto

Si usas variables globales, como es tu caso, tendría más sentido que pusieses todo el código.

Si además lo encierras con las etiquetas Highlight para que sea un poco más legible mejor que mejor.

PD.: deberías plantearte dejar de usar variables globales. Salvo que sean una exigencia de la práctica no suele ser sencillo lidiar con dichas variables.

Un saludo.
  #5 (permalink)  
Antiguo 24/11/2014, 23:06
Avatar de lausanchez  
Fecha de Ingreso: noviembre-2014
Ubicación: San Pedro Sula, Cortes
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Clases compuestas y arreglos tipo objeto

Hola Eferion,
si , en mi caso tengo que usar variables globales.. T-T
Soy nueva en el foro, disculpa mi ignorancia por las etiquetas Highlight
gracias por tus sugerencias y consejos.

Un Saludo..

Etiquetas: arreglos, clases, consola, funcion, int, numero, objeto, tipo
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 22:19.