Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lebr123 en 14 Agosto 2017, 01:24 am



Título: no me muestra el contenido de mi vector
Publicado por: lebr123 en 14 Agosto 2017, 01:24 am
hola , muy  buenas  tardes  soy  nuevo  en el  lenguaje  c++
y  se me presento el siguiente  problema,  
cree una  clase que se  llama  orden  en la  cual  valga  la redundancia quiero  ordenar  un vector   que  ya  esta  con 5  posiciones llenas
el  problema  es que al imprimirlo no  me  muestra  los numeros  solo me muestra el mensaje  de  los printf.
de ante  mano muchas  gracias  

aqui el  codigo

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  4. class orden{
  5. private:
  6. int tam, i , j , aux;
  7. int vec[5];
  8. public:
  9. void ordenar(int*,int, int , int , int );
  10. void imprimir(int*);
  11. };
  12. void orden::imprimir(int vector1[]){
  13. int i;
  14. vec[5]=vector1[5];
  15. for(i=0;i<5;i++){
  16. printf("arreglo sin orden = \n" , vec[ i ]);
  17. }
  18. }
  19.  
  20. void orden::ordenar(int vector[],int tamano, int indice1, int indice2 , int auxiliar ){
  21. int tam=tamano;
  22. vec[5]=vector[5];
  23. i=indice1;
  24. j=indice2;
  25. aux=auxiliar;
  26. for(i=0;i<=5;i++){
  27. printf("arreglo sin orden = \n" , vec[i]);
  28. }
  29. for(i=1;i<=5;i++){
  30. for(j=0;j<=5;j++){
  31. if(vec[j]<vec[i]){
  32. aux=vec[j];
  33. vec[j]=vec[i];
  34. vec[i]=aux;
  35. }
  36. }
  37. }
  38.  
  39. for(i=0;i<=5;i++){
  40. printf("arreglo ordenado = \n" , vec[i]);
  41. }
  42. }
  43.  
  44. int main() {
  45. int vector[5]={5,4,3,2,1};
  46. orden obj;
  47. obj.ordenar(vector,5,0,0,0);
  48. obj.imprimir(vector);
  49. system("pause");
  50. return 0;
  51. }


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: no me muestra el contenido de mi vector
Publicado por: engel lex en 14 Agosto 2017, 01:32 am
procura no mezclar c y c++

Código:
#include <stdio.h>

es C, en tal caso es cstdio (sin .h)

el printf no imprime el numero porque no le indicaste que imprimiera el numero
Código
  1. printf("arreglo sin orden = \n" , vec[i]); // tu codigo
  2.  
  3. //como debe ser
  4. printf("arreglo sin orden = %d \n" , vec[i]); //%d indica entero


Título: Re: no me muestra el contenido de mi vector
Publicado por: lebr123 en 14 Agosto 2017, 02:22 am
vale  muchas  gracias   por  la  ayuda .
pero  ahora  cuando imprimo  me  aparecen números  que no tienen nada  que  ver he  buscado  por  otras  partes  pero  no  he  encontrado la  solución
y  tampoco se  como  subir  el pantallazo jajajjajajajja para  que lo puedan ver    perdon por  la ignorancia  :( :( :( :xD  


Título: Re: no me muestra el contenido de mi vector
Publicado por: ivancea96 en 14 Agosto 2017, 03:42 am
Por partes:
Código
  1. vec[5]=vector[5];
Si con eso pretendes copiar un vector en el otro, no puedes hacerlo así. Tienes que copiar elementoa  elemento. Es por eso que quizás te saldrá basura.

Luego, tienes los bucles for con "i<=5". Tiene que ser "i<5". No puedes acceder a vec[5], ya que el último índice es 4. Del 0 al 4.

Por último, la clase en sí no tiene mucho sentido. Ordenar recibe un vector y lo ordena en su propio array. Luego, Imprimir recibe otro vector y lo imprime. Entonces, ¿para qué sirve "vec"?


Título: Re: no me muestra el contenido de mi vector
Publicado por: lebr123 en 14 Agosto 2017, 03:59 am
gracias por responder
la  idea  en si  es que  el vector  que tengo  en main ordenarlo en el  metodo  ordenar  pero  se que hay  algo mal hay  y  la  verdad  he  buscado  y no  encuentro  la  solucion  quisiera  saber  como pasar  todo  ese  vector de  main  al  metodo  ordenar  y  lo imprima  ordenado  estoy  confundido  con el  tema  de  vectores  la  verdad


Título: Re: no me muestra el contenido de mi vector
Publicado por: ivancea96 en 14 Agosto 2017, 04:00 am
Elt ema copiar, lo dicho, con un for y copias elementoa  elemento.

Luego, ¿cuál es la diferencia actualmente entre tu clase y tener 2 funciones por separado sin más? Ninguna.
Así que el tema es, ¿realmente quieres la clase? ¿Qué problema habría con tener una función "ordenar" y una función "imprimir"?