Fazer uma matriz com letras aleatórias??

1. Fazer uma matriz com letras aleatórias??

Larissa Fiorini
larissaf

(usa Linux Mint)

Enviado em 12/06/2014 - 21:12h

Por favoor, como fazer?
Meu professor pediu para a gente fazer um candy crush em C, mas com letras. Então preciso fazer uma matriz 9x9 com letras aleatórias. E ele não mostrou como usar o 'rand' então não estou conseguindo..
Fiz assim:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>

int x, y;



char vetor(void)
{
char vetorletra[6] = {
'G', 'B', 'F', 'M', 'Z'
};
int mat[9][9];
char n;
srand(time(NULL));
for (x=1; x<='M'; x++)
{
for (y=1; y<='Z'; y++)
{
n = (vetorletra) (rand() % 10);
mat[x][y]= n;
printf("[%c] ", mat[x][y]);

}
getch();
}
return 0;
}

Mas não está funcionando.. como posso fazer?
E para imprimir depois a matriz também estou tendo dificuldade..
Muito obrigado!!


  


2. Re: Fazer uma matriz com letras aleatórias??

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/06/2014 - 22:35h

Boa noite. Seja bem-vinda a comunidade

Primeiramente uma dica: Quando for postar seus códigos aqui coloque entre as tags [ code] [/ code], sem o espaço antes do "c".

Aqui mesmo tem uma dica a respeito do uso da função rand:
http://www.vivaolinux.com.br/dica/Gerando-numeros-aleatorios-em-C

Dê uma lida e procure entender como usar a função, para posteriormente aplicá-la ao seu programa.

O seu código-fonte contém alguns erros de sintaxe e de lógica:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>

int x, y;

char vetor(void)
{
char vetorletra[6] = {'G', 'B', 'F', 'M', 'Z'};
int mat[9][9];
char n;
srand(time(NULL));
for (x=1; x<='M'; x++)
{
for (y=1; y<='Z'; y++)
{
n = (vetorletra) (rand() % 10);
mat[x][y]= n;
printf("[%c] ", mat[x][y]);

}
getch();
}
return 0;
}


Em primeiro lugar, seu programa não tem a função principal main().No lugar de char vetor(void), deveria ser int main().

Em segundo lugar, você declarou o vetor "vetorletra" com capacidade para 6 elementos e só usou cinco(Não é errado, mas está gastando memória a toa).

Em terceiro lugar, você disse que quer uma matriz que armazene caracteres, então a matriz tem que ser do tipo char. Você declarou como int, não dá erro, porém o ideal é usar como char.

Em quarto lugar, você está fazendo as comparações nos laços com caracteres. Isso não trará o resultado esperado. Você quer "encher" a matriz certo? Então quantas repetições você acha que tem que ser feitas? Pense na matriz como se fosse uma tabela, o primeiro laço(controlado pelo x) representam as linhas da tabela, o segundo laço(controlado pelo y,e interno ao x) representam as colunas. E inicialize essas variáveis no laço for com 0, ambas, porque em linguagem C os índices dos vetores e matrizes começam no 0. Por exemplo, o índice do primeiro elemento do vetor "vetorletra[6]" é "vetorletra[0]", cujo valor é o primeiro elemento do vetor, no caso é 'G'.

Em quinto lugar, procure separar as coisas, primeiro preencha a matriz, e depois que estiver completamente preenchida escreva os valores na tela.

A atribuição que você fez na linha 19 é inválida

n = (vetorletra) (rand() % 10));

Dê uma olhada a respeito de vetores, para ver como passar um elemento de um vetor para uma variável.

Bons estudos!



3. Re: Fazer uma matriz com letras aleatórias??

Larissa Fiorini
larissaf

(usa Linux Mint)

Enviado em 13/06/2014 - 19:09h

Muito obrigado pela ajuda!!Fiz os ajustes que você indicou.
Mas olhando aqui sobre o rand, entendi bem seu funcionamento com números, porém ainda não entendi como posso colocar letras aleatórias. Não sei como acessar o vetor e preencher a matriz com caracteres aleatórios do vetor. Você poderia me ajudar??


4. Re: Fazer uma matriz com letras aleatórias??

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/06/2014 - 22:44h

larissaf escreveu:

Muito obrigado pela ajuda!!Fiz os ajustes que você indicou.
Mas olhando aqui sobre o rand, entendi bem seu funcionamento com números, porém ainda não entendi como posso colocar letras aleatórias. Não sei como acessar o vetor e preencher a matriz com caracteres aleatórios do vetor. Você poderia me ajudar??


De nada! Onde meu pouco conhecimento puder ajudar alguém fico feliz.

Bom, vamos por partes:


Mas olhando aqui sobre o rand, entendi bem seu funcionamento com números, porém ainda não entendi como posso colocar letras aleatórias.


Isso mesmo, a função rand() irá gerar NÚMEROS aleatórios. Mas você quer que sejam "embaralhadas" as letras, certo? É aí o ponto importante de se entender.

Você criou um vetor chamado vetorletra[6]. Esse vetor irá armazenar 6 letras distintas. Mas aí você pensa, "onde entra a função rand() para eu conseguir manipular essas letras?". A função rand() entra justamente no índice desse vetor vetorletra[6].

Por exemplo:


n = rand() % 5;
mat[x][y] = vetorletra[n];


O que foi feito acima? Na variável n, foi atribuído um valor aleatório entre 0 e 5. Lembre-se que em linguagem C a contagem do índice começa no 0. Então como são 6 letras, a última letra está no índice 5.

Depois na matriz mat[x][y], foi atribuído uma letra aleatória porque o n que é o índice do vetor irá mudar a cada repetição do laço, atribuindo a n uma letra aleatória a cada repetição do laço.


Não sei como acessar o vetor e preencher a matriz com caracteres aleatórios do vetor.


Está respondido no trecho de código acima. Sendo que esse trecho é do seu programa. Só tome cuidado e coloque n como tipo int. Por que em n não irá ficar armazenado uma letra mas sim um número aleatório entre 0 e 5.

E também quando for usar uma função, não use somente o nome dela. Não é rand, mas rand(). Não se esqueça dos parênteses, se não irá ocorrer um erro na compilação.









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts