Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Localhost

Código C

Mensagens Recomendadas

Localhost    7
Localhost

Olá pessoal, eu estou aqui com muitas dificuldades neste programa, o problema é que ele me está a imprimir duas vezes a mesma string e está a pôr mais letras do que aquilo que devia, eu só queria que ele pusesse 4.

Está aqui o programa:

#include <stdio.h>

int main()
{
  char abc[24] = {'a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','x','z'};
  int i=0,y,z,j,x=0;
  char str[3];
  srand(time(NULL));
  while(i<=3)
  {
    str[i] = abc[x];
    x++;
    i++;
    y = rand() % 24 + 1;
    str[i] = abc[y];
    z = rand() % 24 + 1;
    i++;
    str[i] = abc[z];
    j = rand() % 24 + 1;
    i++;
    str[i] = abc[j];
    printf("%s\n", str);
  }
  return 0;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Localhost    7
Localhost

Pessoal, já consegui pôr direito com três caracteres mas quando meto 4 já com os ajustes em todas as strings (numero de caracteres) ele falha.

Está aí o código neste momento:

#include <stdio.h>

int main()
{
  char abc[24] = {'a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','x','z','\0'};
  int i=0,y,z,j,x=0,a=0;
  char str[3];
  srand(time(NULL));
  /*while(a<100)
  {*/
    for(i=0;i<=3;i++)
    {
      str[i] = abc[x];
      x++;
      i++;
      y = rand() % 24 + 1;
      str[i] = abc[y];
      z = rand() % 24 + 1;
      i++;
      str[i] = abc[z];
      j = rand() % 24 + 1;
      i++;
      str[i] = abc[j];
      if(i==3) str[i] = '\0';
      printf("%s\n", str);
      a++;
    }
  //}
  return 0;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

E utilizares o ciclo para o que ele serve?

#include <stdio.h>

int main()
{
  char abc[23] = {'a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','x','z'};
  int i=0,x=0;
  char str[3];
  srand(time(NULL));
  for(i=0;i<=3;i++) {
      x = rand() % 23 + 1;
      str[i] = abc[x];
  }
  str[i] = '\0';
  printf("%s\n", str);

  return 0;
}

PS: Não compilei, mas acho que deve estar a funcionar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Localhost    7
Localhost

Isso eu ja tinha feito em codes anteriores, o problema é que ele está a repetir as palavras duas a duas, tipo este output:

ntjh

ntjh

Eu não queria que isto acontecesse...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Localhost    7
Localhost

Pessoal, já consegui pôr o programa a funcionar direitinho, agora tem um problema...

É que eu pu-lo a começar sempre a string com a letra "a", só que agora o problema é que eu ao metê-lo a iniciar com a letra "a" e ele não mete mais "a's" em mais nenhum lado da string. Será que é algum problema com a função rand()?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Localhost    7
Localhost

Triple-post  :P

O problemas estava no rand que estava a ir entre 1 e 23 não passando pelo 0, ou seja nao ia buscar a psoição 0 da string abc. Obrigado a todos, podem fechar :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade