no me muestra el contenido de mi vector

Iniciado por lebr123, 14 Agosto 2017, 01:24 AM

0 Miembros y 1 Visitante están viendo este tema.

lebr123

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 (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class orden{
private:
int tam, i , j , aux;
int vec[5];
public:
void ordenar(int*,int, int , int , int );
void imprimir(int*);
};
void orden::imprimir(int vector1[]){
int i;
vec[5]=vector1[5];
for(i=0;i<5;i++){
printf("arreglo sin orden = \n" , vec[ i ]);
}
}

void orden::ordenar(int vector[],int tamano, int indice1, int indice2 , int auxiliar ){
int tam=tamano;
vec[5]=vector[5];
i=indice1;
j=indice2;
aux=auxiliar;
for(i=0;i<=5;i++){
printf("arreglo sin orden = \n" , vec[i]);
}
for(i=1;i<=5;i++){
for(j=0;j<=5;j++){
if(vec[j]<vec[i]){
aux=vec[j];
vec[j]=vec[i];
vec[i]=aux;
}
}
}

for(i=0;i<=5;i++){
printf("arreglo ordenado = \n" , vec[i]);
}
}

int main() {
int vector[5]={5,4,3,2,1};
orden obj;
obj.ordenar(vector,5,0,0,0);
obj.imprimir(vector);
system("pause");
return 0;
}



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

engel lex

procura no mezclar c y c++

#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 (cpp) [Seleccionar]
printf("arreglo sin orden = \n" , vec[i]); // tu codigo

//como debe ser
printf("arreglo sin orden = %d \n" , vec[i]); //%d indica entero

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

lebr123

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  

ivancea96

Por partes:
Código (cpp) [Seleccionar]
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"?

lebr123

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

ivancea96

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"?