Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alape04 en 21 Octubre 2016, 04:28 am



Título: [AYUDA] Necesito entender el código - C++
Publicado por: Alape04 en 21 Octubre 2016, 04:28 am
Hola que tal, me gustaria entender el codigo y mas ¿PORQUE SE UTILIZA TRES VECTORES ( A[], B[] Y C[])

Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <cstdlib>
  4. using namespace::std;
  5.  
  6. enum { n = 10};
  7.  
  8. void Imprime( int A[]);
  9. void Recibe ( int B[]);
  10. void Burbuja( int C[]);
  11.  
  12. int main(){          
  13. int Arreglo[n] = {0, 0};
  14.  
  15.  
  16.  
  17. Recibe(Arreglo);
  18. cout <<"\nORDEN INTRODUCIDOS: " <<endl;
  19. Imprime(Arreglo);
  20.  
  21. Burbuja(Arreglo);
  22.  
  23. cout <<"\nRESULTADO " <<endl;
  24. Imprime(Arreglo);
  25.  
  26. getch();
  27. return 0;
  28. }        
  29. void Imprime( int A[] ){  
  30.  
  31. for ( int j = 0; j < n; j++ ){  
  32. cout << "\t" << A[j];
  33.  
  34. if ( 0 == j + 1 % 10){
  35. cout <<endl <<endl;
  36. }
  37. }
  38. cout <<endl <<endl;
  39. }
  40. void Recibe( int B[] ){  
  41.  
  42. for ( int i = 0; i < n; i++ ){
  43. cout<< i + 1 << "-NUMERO: ";
  44. cin >> B[i];
  45. }
  46. system("cls");
  47. }      
  48.  
  49. void Burbuja( int C[]){              
  50. int aux,t,i;
  51.  
  52. do{
  53. t=0;
  54. for(i=0;i<=n/2-1;i++){
  55. if (C[i]> C[i+1]){
  56. aux=C[i];
  57. C[i]=C[i+1];
  58. C[i+1]=aux;
  59. t=1;
  60. }
  61. }
  62. }while (t!=0);
  63. do{
  64. t=0;
  65. for (i=n/2; i<n-1 ; i++){
  66. if(C[i]< C[i+1]){
  67. aux=C[i];
  68. C[i]=C[i+1];
  69. C[i+1]= aux;
  70. t=1;
  71. }
  72. }
  73. }while(t!=0);
  74. }                
  75.  


Título: Re: [AYUDA] Necesito entender el código - C++
Publicado por: palacio29 en 21 Octubre 2016, 05:27 am
Hola

No se nada de C++ pero vos tenes declaradas 3 funciones que son imprime, recibe, burbuja. En los parametros les pasas un arreglo de enteros llamados A[]  , a la otra B[] y en la otra C[].

En el main cuando llamas a las 3 funciones siempre le estas pasando el arreglo nuevo que creaste en el main y al momento de entrar en el cuerpo de cada funcion lo que estas usando es siempre el mismo arreglo, en el prototipo de la funcion le podes cambiar el nombre pero siempre estas usando el mismo arreglo.

Cuando estes en la funcion recibe, esta funcion va a recibir como parametro un arreglo y lo va a nombrar B, pero siempre estas usando el mismo arreglo y los valores que cambies dentro de esa funcion van a modificar al arreglo.

Es decir que si vos a esas 3 funciones que tenes ahi, en vez de ponerles como parametros A,B,C y le pones como parametro por ejemplo "void recibe(int arreglo[]); y le pones de nombre a cada una arreglo, va a funcionar igual, de hecho es mas recomendable que lo hagas asi no te confundis tanto.

En cuanto al codigo es simplemente cargar un arreglo, imprimirlo y hacer el burbujeo para ordenarlo de mayor a menor o de menor a mayor.