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)
| | |-+  Ayuda inicializando una variable desde función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda inicializando una variable desde función  (Leído 2,744 veces)
yeop

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda inicializando una variable desde función
« en: 13 Febrero 2016, 08:44 am »

Buenas a todos. Puede que lo que vaya a preguntar sea una tontería, pero "acabo de empezar" en esto de la programación y no consigo resolverlo.
Planteo el problema.

Tengo un tipo de datos tal que así:

Código
  1. typedef struct {
  2.    bool bando;      
  3.    int capacidad;
  4.    int fondos;
  5.    double ingresos;
  6.  
  7. } Naves;

Después en el main() tengo puesto que nada más empezar haga:
  
Código
  1. Naves naveRoja, naveAzul; //crea 2 variables de tipo Naves
  2.  
  3.   inicializarNaves(naveAzul, true); //el booleano es para determinar de qué bando es la nave
  4.   inicializarNaves(naveRoja,false);


Y en la función de inicialización el programa se asigna unos valores predefinidos a un barco de cada bando dependiendo de qué bando sea. Es decir, a la naveRoja le pone capacidad 2000 y a la azul capacidad 1500.
El prototipo es tal que así:
Código
  1. void inicializarNaves(Naves &nave,bool bando)
El problema viene en esta función.
Yo lo que quiero hacer en esta función es, ya que le paso la variable "naveAzul":
Código
  1. naveAzul.capacidad=1500
Pero da error diciendo que no existe dicha variable.
Si le pongo:
Código
  1. nave.capacidad=1500
no da problemas pero no me realiza distinción entre la naveAzul y la naveRoja.

Los parámetros de "inicializarNaves" no puedo cambiarlos, tengo que dejarlo tal cual está.

Y ahí estoy atascado, a ver si me alguien me puede echar una manita.  :P


« Última modificación: 13 Febrero 2016, 10:55 am por Eternal Idol » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda inicializando una variable desde función
« Respuesta #1 en: 13 Febrero 2016, 08:54 am »

Lo que pasas es una referencia a naveAzul (el ambito de esa variable local es main, el identificador no existe en inicializarNaves), la direccion de memoria donde esta alojada la variable, en inicializarNaves solo podes acceder a nave y los cambios que hagas seran reflejados en la memoria, en el main si accedes a naveAzul veras esos cambios. Lo que tenes que hacer es simplemente comprobar el valor de bando y trabajar con nave (o un simple if else es suficiente).


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda inicializando una variable desde función
« Respuesta #2 en: 13 Febrero 2016, 09:43 am »

C no tiene capacidad para saber de que tipo es una variable, sólo le interesa lis bytes que ocupa. El elegir el tipo ya lo has hecho pasando a la función el dato con el bool y es el que debes usar para inicializar.
Para inivializar con bools el operador ternario va muy bien.

Código
  1. nave.capacidad = bando? 1500 : 2000;
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda inicializando una variable desde función
« Respuesta #3 en: 13 Febrero 2016, 10:45 am »

El tipo es exactamente el mismo, Naves, y en C no existen las referencias usadas en ese codigo aunque si los punteros. Mientras haya un solo campo que inicializar (capacidad) sera mejor usar el operador ternario aunque si hubiera mas lo ideal seria no repetir comparaciones.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
yeop

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda inicializando una variable desde función
« Respuesta #4 en: 13 Febrero 2016, 11:45 am »

Muchas gracias por las respuestas.  :D

Los operadores ternarios no los hemos dado y puesto que es para clase no sé si me dejarán usarlos. Y de todos modos "capacidad" no es lo único que hay que inicializar, los demás también tengo que inicializarlos pero he puesto "capacidad" solo como ejemplo.
Así que utilizaré el otro método.

Lo que pasas es una referencia a naveAzul (el ambito de esa variable local es main, el identificador no existe en inicializarNaves), la direccion de memoria donde esta alojada la variable, en inicializarNaves solo podes acceder a nave y los cambios que hagas seran reflejados en la memoria, en el main si accedes a naveAzul veras esos cambios. Lo que tenes que hacer es simplemente comprobar el valor de bando y trabajar con nave (o un simple if else es suficiente).

Si no lo he entendido mal: Si yo a "inicializarNaves" le paso desde el main "naveAzul" y en la función "inicializarNaves" pongo:
Código
  1. nave.capacidad=1500

en el main
Código
  1. naveAzul.capacidad
tendrá el valor 1500.

¿Es así?
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda inicializando una variable desde función
« Respuesta #5 en: 13 Febrero 2016, 12:48 pm »

Si, es asi, debido a que pasas el parametro por referencia, digamos que cuando lo modificas en inicializarNaves estas trabajando con un alias (el parametro nave) que apunta a naveAzul, naveRoja o el nombre que le des a la variable que pasas.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
yeop

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda inicializando una variable desde función
« Respuesta #6 en: 13 Febrero 2016, 12:55 pm »

De acuerdo, muchas gracias.  :D

Creo que con eso ya puedo ir avanzando.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda inicializando una variable desde función
« Respuesta #7 en: 13 Febrero 2016, 13:10 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado] Cambiar una Variable String Desde una Funcion « 1 2 »
Programación Visual Basic
agus0 13 6,379 Último mensaje 23 Enero 2011, 08:28 am
por agus0
Problema inicializando una variable
Java
reygecko 2 2,172 Último mensaje 30 Diciembre 2012, 00:59 am
por reygecko
Problema al procesar una variable desde php a una función javascript
PHP
Legnak 3 2,619 Último mensaje 19 Junio 2013, 04:30 am
por Legnak
como pasar variable de una a otra desde una funcion « 1 2 »
Programación C/C++
geshiro 16 7,179 Último mensaje 22 Mayo 2016, 03:51 am
por geshiro
Ayuda con python | No me coje una funcion en una variable porque??
Scripting
TheIllusionist 9 2,729 Último mensaje 18 Marzo 2017, 23:40 pm
por BigKaz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines