Ir ao conteúdo
  • Cadastre-se
Richer

Como eu faço para nao repetir vetores no c++

Recommended Posts

eu tenho q fazer um jogo de anagrama, mas eu travei em uma parte onde toda hora q eu embaralho as letras programa me da letras repetidas, o que eu faço?

 

#include<conio.h>
#include<time.h>
#include<string.h>
using namespace std;
 int main(){
     cout<<"\t\t\t BEM VINDO AO JOGO ANAGRAMA!\n\n";
     cout<<"COMO JOGAR: O JOGADOR IRA OLHA UM CONJUNTOS DE LETRAS TODO EMBARALHADO E TENTARA FORMAR PALAVRAS, SE O USUARIO ACERTAR A PALAVRA IRA PARA A PROXIMA FASE MAS SE ERRAR IRAR CONTINUAR NA MESMA ATE ACERTAR!\n\n";
 char vetor[7];
 char a[7] = {'A','L','E','G','R','I','A'};
 char b[7] = {'A','L','E','G','R','I','A'};
 char c[7] = {'A','L','E','G','R','I','A'};
 char d[7] = {'A','L','E','G','R','I','A'};
 char e[7] = {'A','L','E','G','R','I','A'};
 char f[7] = {'A','L','E','G','R','I','A'};
 char g[7] = {'A','L','E','G','R','I','A'};

do{
 srand (time(NULL));
 rand() ;
 cout<< a[rand() % 6];
 cout<< b[rand() % 6];
 cout<< c[rand() % 6];
 cout<< d[rand() % 6];
 cout<< e[rand() % 6];
 cout<< f[rand() % 6];
 cout<< g[rand() % 6]<<endl;
    cout<<"Digite a palavra: \n\n";
    cin>>vetor;


       if( strcmp(vetor,"alegria")==0){
        cout<<"PARABENS é ANAGRAMA \n\n";
    }

       else if(strcmp(vetor,"galeria")==0){
        cout<<"PARABENS é ANAGRAMA \n\n";
       }
       else if( strcmp(vetor,"alergia")==0){
        cout<<"PARABENS é ANAGRAMA \n\n";
    }
       else{
        cout<<"\t\t :/ errrooou, tente de novo \n\n";
       }
       }while((strcmp(vetor,"alegria")!=0) && (strcmp(vetor,"alergia")!=0) && (strcmp(vetor,"galeria")!=0));

       cout<<"\t\t fase 1 completa \n\n";

       system("pause");
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde@Richer

Pensei que através de um vetor de inteiros inicializado com 0s, o programa vai preenchendo este vetor com os índices sorteados e antes que a próxima letra seja impressa faça um consulta no vetor de inteiros se a resposta for positiva retorna a

sortear novo índice e se for negativa imprime a letra do correspondente índice e armazena 1 no vetor de inteiros na respectiva posição;
 

@author Mauro Britivaldo, 06/06/2016
#include <stdio.h>
int getWord(char str_enter[]);
int strShow(char str_enter[]);
int main(void)
{
    char str_my_string[255] = {'\0'};
    while(!getWord(str_my_string)) continue;
    strShow(str_my_string);

    return 0;
}
int getWord(char str_enter[])
{
    int input = 0;
    puts("ENTRE COM 1 PALAVRA:");
    input = scanf("%s", str_enter);
    while(getchar() != '\n') continue;
    return input;
}
int strShow(char str_enter[]) //Aqui é a função ond acontece a mágica ...
{
    char index[255] = {0};
    int input = 0;
    puts("ENTRE COM 1 NUMERO:");
    while(input > -1)
    {
        scanf("%d", &input);
        if(input > 0 && index[input])
        {
           puts("JA ENTROU COM ESTE VALOR,\nTENTE OUTRO OU -1 PARA SAIR");
           continue;
        }
        if(input > -1)
        {
            printf("%d.::.%c\n", input, str_enter[input]);
            index[input] = 1;
        }
        else if(input < 0)
        {
            puts("THANKS!!!");
            return 0;
        }
        puts("ENTRE COM 1 NUMERO:");
        input = 0;
    }
}

 

Editado por Mauro Britivaldo
Código de Exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×