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
#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 (http://foro.elhacker.net/reglas.htm)
-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
printf("arreglo sin orden = \n" , vec[i]); // tu codigo
//como debe ser
printf("arreglo sin orden = %d \n" , vec[i]); //%d indica entero
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
Por partes:
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"?
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
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"?