• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Localhost

Código C

10 mensagens neste tópico

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;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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()?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal, eu acho e não sei porque que o problema é da letra "a", eu estou aqui a criar as palavras e letra "a" não aparece :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Duas coisas:

1ª - para a próxima coloca um título esclarecedor no tópico

2ª - em vez de fazer 3 posts seguidos, altera o anterior :P

0

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