Ir ao conteúdo

Srand


viniciusvaz

Posts recomendados

Postado

Lembre-se char é apenas int em C, pesquise no google algo como tabela ascii, conversão de int em char.

Por exemplo 'A' é igual ao numero 65, sen do assim 'B' é = 66. é só ir iterando. além disso 'a' = 97.

Postado

Olá viniciusvaz,

Eu fiz desta forma (não sei se era assim que você está procurando):


#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<time.h>

main() {
int i;
srand(time(0));

for (i = 0; i >= 66, i <= 127; i++) {
char letra = static_cast<char> (1 + rand() & 127);

if (isalpha(letra))
printf("%c ", letra);
}
}

Teste e depois diga qualquer coisa...

Abraço,

Rúben

Postado

essa função que eu criei retorna um int aleatório alfabético ele testa para ver ser se o caractere é alfabetico e o retorna copie e cole em seu código

Com um tolower() ou toupper() você consegue obter só maiuscula ou minuscula, fica a dica.


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>

//retorna um char qualquer
int charAleatorio(){
int i;
srand(time(NULL));
//ele fica rodando até que i seja um caractere
while(1){
i = rand() % 127;
if (isalpha(i)) return i;
}
}

int main(void){
char ch;
//gera um char aleatório
ch = charAleatorio();
printf("Caractere sorteado: %c\n", ch);
return 0;
}

Esta dando um erro:

`static_cast' undeclared (first use in this function)

como arrumo?

é sintaxe do c++, não sei que fonte você está usando(uso .c) o que ocasionaria erro.

Postado

Olá pessoal,

Pois Dani0liveira mas esse só imprime um char na tela e o viniciusvaz quer entre os números 66 até 127...

viniciusvaz exprimenta desta forma que não vai dar nenhum erro e está funcionando perfeitamente:


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

main() {
srand(time(NULL));
for (int i = 0; i >= 66, i <= 127; i++) {
int r = rand() % 35 + 60;
printf("%c ", (char) r);
}
}

Teste e depois diga se deu algum erro...

Abraço,

Rúben Cruz

Postado
Olá pessoal,

Pois Dani0liveira mas esse só imprime um char na tela e o viniciusvaz quer entre os números 66 até 127...

viniciusvaz exprimenta desta forma que não vai dar nenhum erro e está funcionando perfeitamente:


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

main() {
srand(time(NULL));
for (int i = 0; i >= 66, i <= 127; i++) {
int r = rand() % 35 + 60;
printf("%c ", (char) r);
}
}

Teste e depois diga se deu algum erro...

Abraço,

Rúben Cruz

Olha a questão dele foi como gerar letras aleatórias,

Como gerar letras aleatorias com a função srand?

depois eu dei-lhe uma dica de que poderia usar inteiros como letras pela tabela ascii. Só que ao ver a tabela ele pensou que as letras ocupavam do numero 66 até 127(ou algo assim, não sei) mas estou respondendo a primeira questão.

E se minha função for tratada como int ele cobre maior parte dos numeros de 66 até 127.

E minha função não imprime um char, retorna um inteiro alfabético(ou char). O programa era para demostrar o uso dela.

Arquivado

Este tópico foi arquivado e está fechado para 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!