• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zecapistolas

Vector Aleatorio

6 mensagens neste tópico

Boa Noite....

Preciso aki d uma ajudazinha: :hmm:

1. Criar um vector, que contenha este números, um dois tres quatro cinco seis sete oito nove dez......escritos em extenso, não em número!

2. Depois, aleatoriamente mostrar um desses números...

cumps  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é a tua dúvida exactamente? Para criares um vector com esses elementos, crias um vector de strings e fazes push_back dos elementos. Depois é utilizares a função rand para escolheres um índice do vector.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então seria algo como isto?!

#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>

using std::cout; using std::endl;
using std::vector;
using std::string;

int main ()
{
    vector<string> vec;
    
    vec.push_back("um");
    vec.push_back("dois");
    vec.push_back("três");
    vec.push_back("quatro");
    vec.push_back("cinco");
    vec.push_back("seis");
    vec.push_back("sete");
    vec.push_back("oito");
    vec.push_back("nove");
    vec.push_back("dez");

    cout << vec.at(rand() % 10) << endl;
    
    return 0;
}

Mas assim, está a dar-m sempre o primeiro elemento....

cumps  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê este codigo, usa o comando shuffle que mistura as coisas de um vector. bjs

#include <iostream>
#include <cstdlib>   // for srand and rand
#include <ctime>     // for time
using namespace std;

int main() {
    int card[52];    // array of cards;
    int n;           // number of cards to deal
    srand(time(0));  // initialize seed "randomly"
     
    for (int i=0; i<52; i++) {
        card[i] = i;  // fill the array in order
    }
    
    while (cin >> n) {    
        //--- Shuffle elements by randomly exchanging each with one other.
        for (int i=0; i<(52-1); i++) {
            int r = i + (rand() % (52-i)); // Random remaining position.
            int temp = card[i]; card[i] = card[r]; card[r] = temp;
        }
        
        //--- Print first n cards as ints.
        for (int c=0; c<n; c++) {
            cout << card[c] << " ";  // Just print number
        }
        cout << endl;
    }
   
   return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Louise, obrigado pela sugestão...mas eu  :nono:  misturar as coisas de um vector, kero apenas escolher um elemento do vector, aleatoriamente...

E penso, já ter encontrado a solução, que eu preciso....faltava a parte do "time"...

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <ctime> 

using std::cout; using std::endl;
using std::vector;
using std::string;

int main ()
{
    vector<string> vec;
    srand(time(0));
    
    vec.push_back("um");
    vec.push_back("dois");
    vec.push_back("três");
    vec.push_back("quatro");
    vec.push_back("cinco");
    vec.push_back("seis");
    vec.push_back("sete");
    vec.push_back("oito");
    vec.push_back("nove");
    vec.push_back("dez");

    cout << vec.at(rand() % 10) << endl;
    
    return 0;
}

cumps  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exacto, tens que alterar a "semente" do gerador de números aleatórios, caso contrário, em todas as execuções ias obter o mesmo resultado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora