AprendendoC Posted May 1, 2012 at 04:32 AM Report #452421 Posted May 1, 2012 at 04:32 AM printf(" Digite o Tamanho de sua Senha: "); scanf("%d", &tamanho); printf(" Senha Gerada: "); for( int i = 0; i < tamanho; i++ ){ num = rand() % 10; letras = rand() % 26+97; printf("% d", num); printf("% c", letras); } e o seguinte pessoal... nesse trecho de codigo acima o meu laço for tah repetindo n vezes que o usuario digitar... so que na saida ele tah gerando o dobro do numero digitado pelo usuario... e eu quero q ele gera somente o n vezes q o usuario digito..
petvetbr Posted May 1, 2012 at 06:28 AM Report #452422 Posted May 1, 2012 at 06:28 AM Isto está ocorrendo pois existem 2 printf a cada iteração. Teria que mudar a lógica para que somente 1 deles for executado a cada iteração. Fernando Lage Bastos - MCP/MCTS/MCPD
AprendendoC Posted May 2, 2012 at 01:29 AM Author Report #452588 Posted May 2, 2012 at 01:29 AM ai que tah o problema... como e q faço isso?? já tentei de tudo.... tentei com ifs.. tentei usar while.. tentei 2 for... e nada..
pmg Posted May 2, 2012 at 08:10 AM Report #452608 Posted May 2, 2012 at 08:10 AM Se o n do utilizador for 4, qual é (um exemplo de) o output esperado? Se o n do utilizador for 5, qual é (um exemplo de) o output esperado? Sugestão: consoante a resposta, podes talvez fazer o for para metade de n e, se necessário, acertar o output no final do ciclo. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
brunoais Posted May 2, 2012 at 08:13 AM Report #452610 Posted May 2, 2012 at 08:13 AM O que é que é o num e o que é que é letras? Hum... Que tal usar um if e um rand() ? Assumindo que rand devolve entre 0 e 1, se for < 0.5, é uma letra, senão é um numero. De qq modo uma maneira melhore é gerar letras e numeros do ACIII partindo só de um numero e depois escrever o carater a q corresponde. O carater "1" existe, o carater "A" existe, etc.. 😄 @pmg N sei se ter sempre letra e numero alternadamente é o que ele quer. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
AprendendoC Posted May 2, 2012 at 01:26 PM Author Report #452685 Posted May 2, 2012 at 01:26 PM O que é que é o num e o que é que é letras? Hum... Que tal usar um if e um rand() ? Assumindo que rand devolve entre 0 e 1, se for < 0.5, é uma letra, senão é um numero. De qq modo uma maneira melhore é gerar letras e numeros do ACIII partindo só de um numero e depois escrever o carater a q corresponde. O carater "1" existe, o carater "A" existe, etc.. 😞 @pmg N sei se ter sempre letra e numero alternadamente é o que ele quer. implementei o if com o rand() e funciono do jeito que eu queria... a saida ficou: Senha Gerada = 814i5 eu tinha tentado implementa esse jeito antes.. so que com o switch.. nem tinha m passado pela cabeça o usar o if dessa maneira... Valeu Pessoal... muito grato pela Ajuda... 😄 case 3: printf(" Digite o tamanho de sua senha: "); scanf("%d", &tamanho); printf(" Senha Gerada: "); for( int i = 0; i < tamanho; i++ ){ aux = rand() % 2; if(aux == 0){ letras = rand() %26+97; printf("%c", letras); } if(aux == 1){ num = rand() % 10; printf("%d", num); } }// fim do for break;
HappyHippyHippo Posted May 2, 2012 at 01:33 PM Report #452689 Posted May 2, 2012 at 01:33 PM int tamanho = 0, iter = 0; ... scanf(.......); /* ler o tamanho do teclado */ ... for (iter = 0; iter < tamanho; iter++) { // ciclo de impressao dos caracteres if (iter % 2 == 0) printf("%c", (rand() % 26) + 'a'); // imprimir um caracter else printf("%c", (rand() % 10) + '0'); // imprimir um digito } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted May 2, 2012 at 01:51 PM Report #452699 Posted May 2, 2012 at 01:51 PM (edited) #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char **argv) { int i; char alfabeto[] = "0123456789" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int nsimbolos = sizeof alfabeto - 1; /* strlen(alfabeto) */ int nletras; if (argc != 2) { fprintf(stderr, "Sintaxe: %s <COMPRIMENTO>\n", argv[0]); exit(EXIT_FAILURE); } srand(time(0)); nletras = atoi(argv[1]); /* strtol seria melhor para validar erros */ for (i = 0; i < nletras; i++) putchar(alfabeto[rand() % nsimbolos]); /* ignora "bias" */ putchar('\n'); return 0; } Edited May 14, 2012 at 09:47 AM by pmg GeSHi update What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
AprendendoC Posted May 2, 2012 at 03:28 PM Author Report #452731 Posted May 2, 2012 at 03:28 PM opa... desse jeito ele faz exatamante como eu queria... 🙂 int tamanho = 0, iter = 0; ... scanf(.......); /* ler o tamanho do teclado */ ... for (iter = 0; iter < tamanho; iter++) { // ciclo de impressao dos caracteres if (iter % 2 == 0) printf("%c", (rand() % 26) + 'a'); // imprimir um caracter else printf("%c", (rand() % 10) + '0'); // imprimir um digito } desse jeito e mais complicado... tens coisas ai que ainda não aprendi... mas obrigado.. vo guarda pra estudar... 👍 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char **argv) { int i; char alfabeto[] = "0123456789" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int nsimbolos = sizeof alfabeto - 1; /* strlen(alfabeto) */ int nletras; if (argc != 2) { fprintf(stderr, "Sintaxe: %s <COMPRIMENTO>\n", argv[0]); exit(EXIT_FAILURE); } srand(time(0)); nletras = atoi(argv[1]); /* strtol seria melhor para validar erros */ for (i = 0; i < nletras; i++) putchar(alfabeto[rand() % nsimbolos]); /* ignora "bias" */ putchar('\n'); return 0; } Obrigado Pessoal pelo ajuda... muito grato! 👍
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now