Dev - C++ - Dev C++ - Generación de Números Aleatorios . Prt 2

 
Vista:
Imágen de perfil de Arii
Val: 16
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dev C++ - Generación de Números Aleatorios . Prt 2

Publicado por Arii (6 intervenciones) el 21/01/2021 01:12:33
Buenas tardes a todos, espero se encuentren bien y hayan pasado a gusto las fiestas; luego de un largo tiempo he decidido retomar este pequeño problema presentado en un foro anterior; luego de leer un poco al respecto y ver algunos ejemplos encontré algo que parecer ser el principio de la respuesta a lo que busco; ordenar los números generados en orden creciente (Priorizando los números de 1 cifra, seguido de los de dos y tres respectivamente). Soy consciente de que estoy pasando algo por alto pero no estoy segura.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <queue>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
 
class prioridad { // Implementamos el functor
    public:
        bool operator()(const int &a, const int &b){
        // Segun tengo entendido aquí va la función de prioridad
        return a>b; // Tengo menos prioridad si soy un entero mayor
        }
};
 
int main(){
    //Declaración de variables
        int i, Numero;
        srand(time(NULL));
 
        // Entonces, una vez declarado lo de arriba no estoy segura como proceder; ya que aquí debajo es donde se pasa al Functor
        priority_queue<int,vector<int>,prioridad> numero_aleatorio;
 
        //Procesamiento
        for(i = 1; i <= 100; i++)
        {
            //Generamos un número aleatorio del 1 al 500
            Numero = 1 + rand() % (501 - 1);
 
            //Guardamos el número generado
            numero_aleatorio.push(Numero);
        }
 
        while (!numero_aleatorio.empty())
        {
            cout << numero_aleatorio.top() << ", ";
            numero_aleatorio.pop();
        }
}

Espero puedan aconsejarme al respecto. Gracias :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dev C++ - Generación de Números Aleatorios . Prt 2

Publicado por Rodrigo (539 intervenciones) el 21/01/2021 01:55:04
Puedes simplificar tu codigo si eliminas completamente la clase prioridad y cambias la declaracion de

1
priority_queue<int,vector<int>,prioridad> numero_aleatorio;

a

1
priority_queue<int,vector<int>,std::greater<int>> numero_aleatorio;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Arii
Val: 16
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dev C++ - Generación de Números Aleatorios . Prt 2

Publicado por Arii (6 intervenciones) el 21/01/2021 02:48:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <queue>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
 
int main(){
        int i, Numero;
        srand(time(NULL));
          //Reemplacé la declaración como sugeriste
        priority_queue<int,vector<int>,std::greater<int>> numero_aleatorio;
 
        //Procesamiento
        for(i = 1; i <= 100; i++)
        {
            //Generamos un número aleatorio del 1 al 500
            Numero = 1 + rand() % (501 - 1);
 
            //Guardamos el número generado
            numero_aleatorio.push(Numero);
        }
 
        while (!numero_aleatorio.empty())
        {
            cout << numero_aleatorio.top() << ", ";
            numero_aleatorio.pop();
        }
}

Gracias por la ayuda; No obstante algo parece no funcionar ya que a la hora de compilar me arroja el siguiente error
" [Error] '>>' should be '> >' within a nested template argument list" Miré un poco en el caso de que escribiera de forma errónea algunn detalle, pero vi ningun problema. ¿a que podria deberse?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dev C++ - Generación de Números Aleatorios . Prt 2

Publicado por Rodrigo (539 intervenciones) el 21/01/2021 04:39:07
Tu compilador prefiere, cuando ve >> que se trata del operador >> y no de la clausura de 2 "<" anteriores.

En esta expresion:

1
priority_queue<int,vector<int>,std::greater<int>> numero_aleatorio;

el >> que esta al final, justo a la izquierda de "numero_aleatorio", es el fin de 2 < que se abren antes, El ultimo > es la clausura del < que se abre al lado de priority_queue< y el anterior es la clausura del que se abre en greater<

Para ayudarle a ese compilador, separa el >> con un espacio entre medio tal como te indica el mensaje de error que incluyes, quedando entonces

1
priority_queue<int,vector<int>,std::greater<int> > numero_aleatorio;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar