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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Devolver un Array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Devolver un Array  (Leído 2,455 veces)
AprendiendoAProgramar

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Devolver un Array
« en: 13 Diciembre 2016, 00:54 am »

Buenas compañeros programadores. :D

Soy nuevo en el foro y me uní para resolver una duda respecto a un programa que intento desarrollar pero me ha costado.

Primeramente cabe recalcar que soy muy muy principiante en eso de programación así que habrá gente a la que le parezca muy fácil pero eso es lo que busco precisamente, ese conocimiento para poder solucionar mi problema.


Bueno al tema. el caso es el siguiente.

Estoy desarrollando el juego de picas y fijas ( ampliamente conocido, muy sencillo ) básicamente el ordenador genera un numero aleatorio ( sin dígitos repetidos ) y la persona tiene que intentar adivinar dicho numero ingresando un numero de 4 dígitos y de acuerdo a si acierta o falla se irá revelando el numero. ahora bien, ya acabe mi programa, simplemente con sentencias if y else y alguno que otro while se puede resolver ( como dije nada del otro mundo ).

Pero me tome un reto, quiero modularizar mi programa y desearía crear una función que me devuelva un array ( se que no es posible que devuelva un array, pero es como lo pienso ) para poder así volver en pequeños procesos mi programa.
básicamente la función hace el proceso de crear numero aleatorio y me regresa esos números, ( tiene que ser array para poder hacer comparaciones con el numero ingresado por la persona) .
de igual forma tener otra función para volver array el numero ingresado por la persona y luego otra función que compare los números y genere un resultado, como ya había dicho tengo desarrollado el programa, tengo todo los procesos, las comparaciones etc, solo me falta meter esas partes en funciones y así poder tener un mejor control del programa.


De todas maneras adjunto el codigode la parte en la cual genero el numero aleatorio ( es largo pero es la forma como se me ocurrió)

Código
  1.  
  2.    /** METER ESTO EN UNA FUNCION**/
  3.  
  4.   srand(time(NULL)); /** para crear numero aleatorio **/
  5.  
  6.   int numeroaleatorio = (rand()%9)+1;                                  /** se le asigna un valor a la variable numero aleatorio comprendido entre 1-9**/
  7.  
  8.   numeroaleatoriofuncion[0] = numeroaleatorio;
  9.   numeroaleatoriofuncion[1] = numeroaleatorio;
  10.   numeroaleatoriofuncion[2] = numeroaleatorio;                         /** Lo que  se hace es comparar el valor de las variables para poder asi cambiarlas, **/
  11.   numeroaleatoriofuncion[3] = numeroaleatorio;                          /**   inicialmente se tiene que todos los numeros iguales, pero luego, por medio del bucle
  12.                                                                             se hacen las comparaciones y asi asegurar que ningun numero se repetira **/
  13.  
  14.   while( numeroaleatoriofuncion[3]==numeroaleatoriofuncion[2]){
  15.    int numeroaleatorio = (rand()%9)+1;
  16.    numeroaleatoriofuncion[2] = numeroaleatorio;
  17.       }
  18.    while (numeroaleatoriofuncion[3] == numeroaleatoriofuncion[1]|| numeroaleatoriofuncion[2] == numeroaleatoriofuncion[1]){
  19.            int numeroaleatorio = (rand()%9)+1;
  20.    numeroaleatoriofuncion[1] = numeroaleatorio;
  21.       }
  22.  
  23.   while (numeroaleatoriofuncion[3] == numeroaleatoriofuncion[0]|| numeroaleatoriofuncion[2] == numeroaleatoriofuncion[0]||numeroaleatoriofuncion[1] == numeroaleatoriofuncion[0]){
  24.    int numeroaleatorio = (rand()%9)+1;
  25.    numeroaleatoriofuncion[0] = numeroaleatorio;
  26.   }
  27.  
  28.                /** ACA TERMINAR LA PARTE PARA GENERAR UN NUMERO ALEATORIO **/
  29.  
  30.  

claramente eso está en el main,ojala se pueda pasar a una función pero me tiene que devolver esos valores aleatorio por separado para poder manipularlos.

He leído bastante y me he topado con los apuntadores y todo ese tema, pero no se como lo puedo aplicar directamente en mi programa.


Gracias por su atención, ojala hayan entendido.


Saludos.


En línea

APENAS EMPIEZO CON ESTO DE LA PROGRAMACIÓN Y CUANDO APARECEN ERRORES ES ALGO COMO........



(ES SOLO HUMOR)
AnthonyS

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Devolver un Array
« Respuesta #1 en: 14 Diciembre 2016, 19:34 pm »

Para lograr el objetivo que propones,la forma mas habitual es usar el paso por referencia.
Con esto usaremos un vector creado en main y poder variar sus datos en funciones o procedimiento,espero que hayas visto el paso por referencia y como se trabaja con el.Un ejemplo:

C++:

Código
  1. #include <iostream>
  2. using namespace std;  //incluir iostream y esta instruccion son lo mas habitual en c++
  3.  
  4. //Supongamos un procedimiento que trabajara con el vector que le transfiero.
  5. void cambiar_valores(int* vec);  //Recibira la direccion de memoria del primer elemento  
  6.                                              //de vec.
  7. int main()
  8. {
  9. int vector[5]={0,1,2,3,4};
  10. cambiar_valores(vector);   //Se transfiere el vector al procedimiento.
  11. cout<<vector[0]<<vector[1]<<vector[2]<<vector[3]<<vector[4]<<endl;
  12. //Se mostraran los valores cambiados.
  13. return 0;
  14. }
  15.  
  16. void cambiar_valores(int* v) //Al haber paso por referencia,los datos cambiado de                      /                                        //v,permaneceran tras el procedimiento.
  17. {
  18. //Cambio de los valores
  19. v[0] = 100;
  20. v[1] = 200;
  21. v[2]=300;
  22. v[3]=400;
  23. v[4]=500;
  24. }

X--------------------X

Espero haberte ayudado.
Un saludo.
Anthony.[/size]


Mod: Los códigos deben ir en etiquetas GeSHi


« Última modificación: 14 Diciembre 2016, 19:36 pm por engel lex » En línea

AprendiendoAProgramar

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Devolver un Array
« Respuesta #2 en: 21 Diciembre 2016, 06:13 am »

 :rolleyes: ;-)
En este proceso propones tener el vector creado en el main y manipularlo con una función, y gracias por tu respuesta, me puede ayudar bastante.

La pregunta que me surge es si hay algún modo de tener el vector en una función(crearlo en una función) y pasar esos valores de vector a otras funciones para manipularlos y que solo en el main me trajera el resultado.
No se si me haga entender.


Gracias.  ;-)
En línea

APENAS EMPIEZO CON ESTO DE LA PROGRAMACIÓN Y CUANDO APARECEN ERRORES ES ALGO COMO........



(ES SOLO HUMOR)
TheFlash

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Devolver un Array
« Respuesta #3 en: 3 Enero 2017, 15:24 pm »

Para mi la mejor forma de lograr lo que propones es usar una clase que contenga como dato miembro un vector y definir en el main un objeto de dicha clase.

Si tienes alguna duda respecto al código no dudes en preguntarme y si tengo alguna cosa mal corregidme por favor, que yo también estoy empezando a aprender ahora.
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class NumeroAleatorio{
  5. public:
  6. int vector[4];
  7.  
  8. void GeneradorAleatorios(){
  9. int numeroaleatorio;
  10. srand(time(NULL)); /** para crear numero aleatorio **/
  11.    for(int i =0; i < 5; i++){
  12.      numeroaleatorio = (rand()%9)+1;                                  //Este bucle recorre el vector(array) desde la posición 0 a la 4 y le va dando valores a cada uno de sus elementos.
  13.    vector[i] = numeroaleatorio;
  14.    }
  15.                         /** Lo que  se hace es comparar el valor de las variables para poder asi cambiarlas, **/
  16.                          /**   inicialmente se tiene que todos los numeros iguales, pero luego, por medio del bucle
  17.                                                                             se hacen las comparaciones y asi asegurar que ningun numero se repetira **/
  18.   while( vector[3]==vector[2]){
  19.    numeroaleatorio = (rand()%9)+1;
  20.    vector[2] = numeroaleatorio;
  21.       }
  22.    while (vector[3] == vector[1]|| vector[2] == vector[1]){
  23.            numeroaleatorio = (rand()%9)+1;
  24.    vector[1] = numeroaleatorio;
  25.       }
  26.  
  27.   while (vector[3] == vector[0]|| vector[2] == vector[0]||vector[1] == vector[0]){
  28.    numeroaleatorio = (rand()%9)+1;
  29.    vector[0] = numeroaleatorio;
  30.   }
  31. }
  32. };
  33.  
  34. int main(){
  35. NumeroAleatorio mi_numero_aleatorio;
  36. .....
  37.  
  38. mi_numero_aleatorio.GeneradorAleatorios(); //La llamada en el main se realizaría así
  39.  
  40. mi_numero_aleatorio.vector[<índice>]; //Para realizar las comparaciones se accedería de esta manera a cada elemento del vector.
  41. }
  42.  

*Nota: Yo suelo usar más variables a la hora de definir el vector y lo declaro como dato miembro privado para que no pueda ser modificado fuera de la clase si no es a través de alguno de sus métodos, he decidido hacerlo así porque simplifica mucho a la hora de entender un código. Espero que los más expertos lo entiendan.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DEVOLVER VALORES ALEATORIOS DE UNA ARRAY EN C#?????'
.NET (C#, VB.NET, ASP)
kanlet 0 4,395 Último mensaje 19 Junio 2011, 20:22 pm
por kanlet
[C] Devolver array bidimensional mediante una función « 1 2 »
Programación C/C++
crawler! 12 21,069 Último mensaje 24 Junio 2013, 22:00 pm
por crawler!
Devolver el menor de un array
Programación C/C++
chicainge 2 2,430 Último mensaje 10 Agosto 2014, 15:30 pm
por leosansan
Error al devolver array multidimensional
Java
viher 0 1,637 Último mensaje 25 Diciembre 2014, 00:30 am
por viher
[Eclipse ARM] Recorrer array, encontrar el elemento mayor y devolver su posicion
Programación General
Kougami 1 2,390 Último mensaje 16 Abril 2017, 22:42 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines