Ir ao conteúdo
  • Cadastre-se

SelectSort Como usar a função rand()?


Posts recomendados

Tentei assim, mas da um erro quando eu compilo e não faz o que eu quero; tentei de outros modos, mas não consegui;

Usei a rand()na linha 35;

#include <iostream>
#include <stdlib.h>
using namespace std;

/*Selection Sort
O mais simples e recomendado para massa de dados pequenas;
Seleciona o menor item e troca pelo que esta na primeira posição; e assim sucessivamente até o ultimo ser o maior;*/
void SelectSort(int vet[10]){
	int min,aux,c=0;
	
	for(int i=0;i<10;i++){
		
		min=i; //A variável "min" vai receber a posição do menor número;
		for(int j=i+1;j<10;j++){ //For para verificar o proximo 
			if(vet[j]<vet[min])
				min=j;
		}
	//Aqui ocorre a troca
	aux=vet[min];
	vet[min]=vet[i];
	vet[i]=aux;
	c++;	
}
	//cout<<"Quantidade de trocas do Selected: "<<c;
	
}//Fim SelectedSort



main(){
	int vet[]={};
	
	SelectSort(vet);
	for(int i=0;i<10;i++){
		
		cout<<rand()%100;
		
		//cout<<vet[i]<<endl;
	}
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DoodohRafael    para usar a função rand() você precisa usar antes a função srand()

por que senão os números escolhidos por rand() serão sempre os mesmos, e precisa

da biblioteca time.h .  e o seu código estava dando erro por que você não tinha colocado

a quantidade de elementos no vetor vet.

int vet[]={};

e também é preciso colocar os números escolhidos por rand no vetor antes de fazer o selectsort

e nessa função os comandos estavam fora do loop J com isso os números não seriam trocados

da forma certa.    Eentão fiz algumas modificações e o código ficou assim :

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;

/*Selection Sort
O mais simples e recomendado para massa de dados pequenas;
Seleciona o menor item e troca pelo que esta na primeira posição; e assim sucessivamente até o ultimo ser o maior;*/
void SelectSort(int vet[10]){
	int mini,aux,c=0;

	for(int i=0;i<10;i++){
	  for(int j=i+1;j<10;j++){ //For para verificar o proximo
             mini=vet[i]; //A variável "min" vai receber o numero na pimeira posição do vetor;
    	     if(  vet[j]<vet[i]){
                  vet[i]=vet[j];//Aqui ocorre a troca
                  vet[j]=mini;
			}
				/*min=j;*/
		}
	/*//Aqui ocorre a troca
	aux=vet[min];
	vet[min]=vet[i];
	vet[i]=aux;
	c++;*/
}
	//cout<<"Quantidade de trocas do Selected: "<<c;

}//Fim SelectedSort



int main(){
        srand(time(NULL));/*isso é para os numeros não repetir*/
	int vet[10]={};

	SelectSort(vet);
	cout<<"          Os Numeros Sorteados Randomicamente"<<endl;
	for(int i=0;i<10;i++){

	    vet[i]=rand()%100;
		cout<<vet[i]<<" - ";

		//cout<<vet[i]<<endl;
	}
	/*agora colocando em ordem crescente*/
	SelectSort(vet);
	cout<<endl;
	cout<<"    Os Numeros Em Ordem Crescente"<<"\n\n";
	for(int i=0;i<10;i++){
        cout <<i+1<<" numero"<<" - "<< vet[i]<<endl;
	}
	cout<<endl;
	getch();
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

15 horas atrás, devair1010 disse:

@DoodohRafael    para usar a função rand() você precisa usar antes a função srand()

por que senão os números escolhidos por rand() serão sempre os mesmos, e precisa

da biblioteca time.h .  e o seu código estava dando erro por que você não tinha colocado

a quantidade de elementos no vetor vet.


int vet[]={};

e também é preciso colocar os números escolhidos por rand no vetor antes de fazer o selectsort

e nessa função os comandos estavam fora do loop J com isso os números não seriam trocados

da forma certa.    Eentão fiz algumas modificações e o código ficou assim :


#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;

/*Selection Sort
O mais simples e recomendado para massa de dados pequenas;
Seleciona o menor item e troca pelo que esta na primeira posição; e assim sucessivamente até o ultimo ser o maior;*/
void SelectSort(int vet[10]){
	int mini,aux,c=0;

	for(int i=0;i<10;i++){
	  for(int j=i+1;j<10;j++){ //For para verificar o proximo
             mini=vet[i]; //A variável "min" vai receber o numero na pimeira posição do vetor;
    	     if(  vet[j]<vet[i]){
                  vet[i]=vet[j];//Aqui ocorre a troca
                  vet[j]=mini;
			}
				/*min=j;*/
		}
	/*//Aqui ocorre a troca
	aux=vet[min];
	vet[min]=vet[i];
	vet[i]=aux;
	c++;*/
}
	//cout<<"Quantidade de trocas do Selected: "<<c;

}//Fim SelectedSort



int main(){
        srand(time(NULL));/*isso é para os numeros não repetir*/
	int vet[10]={};

	SelectSort(vet);
	cout<<"          Os Numeros Sorteados Randomicamente"<<endl;
	for(int i=0;i<10;i++){

	    vet[i]=rand()%100;
		cout<<vet[i]<<" - ";

		//cout<<vet[i]<<endl;
	}
	/*agora colocando em ordem crescente*/
	SelectSort(vet);
	cout<<endl;
	cout<<"    Os Numeros Em Ordem Crescente"<<"\n\n";
	for(int i=0;i<10;i++){
        cout <<i+1<<" numero"<<" - "<< vet[i]<<endl;
	}
	cout<<endl;
	getch();
}

 

valeu mano, rodou certin

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!