Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2011, 17:40
paracoccidio
 
Fecha de Ingreso: abril-2011
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 27
Antigüedad: 13 años, 7 meses
Puntos: 4
Pregunta Problema con histograma en c++

Hola que tal a todos pues la neta no crei llegar a estos extremos, siempre me tocaba ayudar aqui pero esta vez ya no pude, cada vez que le intento pues me ago mas bolas, creo que los arreglos no son mi fuerte.
bueno pues tengo un programa sobre un arreglo N en el cual el usuario ingresa el tamaño y lo llena, lo ue tengo que hacer es modificar el arreglo para que los caracteres queden de manera no decreciente e imprimirlos con asteriscos, hasta ahi no hay problema. el problema es a la hora de voltear el histograma y hacer otro arreglo!!!
para ser mas especifico:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.     int limite;
  6.     int x = 30;
  7.     int y = 2;
  8.     int menor = 0;
  9.     int mayor;
  10.    
  11.     std::cout<<"Cuantos numeros quieres: ";//pide al usuario hasta que numero llegar
  12.     std::cin>>limite;
  13.     int Asteriscos[limite];
  14.    
  15.     for(int i = 0;i < limite; i++){
  16.         std::cout<<"Ingresa el "<<i+1<<" caracter: ";//se pide y se guardan los valores de cada casilla
  17.         std::cin>>Asteriscos[i];  
  18.     }
  19.     system("cls");
  20.    
  21.     for(int i = 0;i < limite;i++){
  22.          for(int e = i; e < limite;e++){
  23.              if(Asteriscos[i] > Asteriscos[e]){//ago un metodo burbuja pra que los guarde
  24.                  menor = Asteriscos[i];        //de manera ascendente
  25.                  Asteriscos[i] = Asteriscos[e];
  26.                  Asteriscos[e] = menor;
  27.                  mayor = Asteriscos[e];
  28.              }
  29.          }
  30.     }
  31.     for(int i = mayor; i >= 0; i--){  
  32.         for(int k = 0; k < limite;k++){
  33.             if(Asteriscos[k] > i)
  34.                 std::cout<<"*";
  35.             else
  36.                 std::cout<<" ";
  37.         }
  38.         std::cout<<"\n";
  39.     }
  40.     ////////////////////////////
  41.     for(int i= 0;i < limite;i++)
  42.         std::cout<<"_";
  43.     std::cout<<"\n\n";
  44.     for(int i = 0;i < limite; i++){//esto es para que se vea  bonitos
  45.         std::cout<<Asteriscos[i];
  46.     }
  47.     ////////////////////////////
  48.     std::cout<<"\n\n";            
  49.    
  50.     std::cin.get();
  51.     std::cin.get();
  52.  
  53.     return 0;
  54. }

bueno pues hasta ahi todo va bien lo malo es por ejemplo:
el usuario ingresa el arreglo asi:
Código C++:
Ver original
  1. arregloEjemplo[8];

imaginemos que ya introdujo los valores y que da asi :
Código C++:
Ver original
  1. arregloEjemplo[1,1,2,4,7,7,8,11];  -------> arregloEjemplo2[1,1,1,2,4,4,4,5,5,6,8];
si se fijan el caracter del primer arreglo es 11 y el tamaño del segundo arreglo seria tambien de 11 pudiendo hacer esto posible con cada caracter al momento de imprimirlo se voltearia el histograma, eso es lo que aun no puedo, alguien me puede dar un empujoncito??!!