Ir ao conteúdo
  • Cadastre-se
anderson de freitas

C Programa que lê um vetor de 15 posiçoes e retorne um outro vetor dos ns primos.

Recommended Posts

Gostaria de saber o que há de errado com o meu programa.


 

int main()
{
 int i, vetorA[5], vetorB[5], j, cont = 0, k = 0, aux = 0;

 printf("Digite os numeros do seu vetor:\n");
 for(i = 0; i < 5; i++)
  scanf("%d", &vetorA);

 for(i = 0; i < 5; i++)
 {
  for(j = 1; j <= vetorA; j++)
  {
   if(vetorA % j == 0)
    cont++;
  }
  if(cont == 2)
  {
   vetorB[k] = vetorA;
   k++;
   aux++;
  }
 }
 
 for(i = 0; i < aux; i++)
  printf("%d ", vetorB);

 return 0;
}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falta zerar a variável cont a cada iteração do for externo.

  • Curtir 2
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@iHollyZinhO Olá. Além do q foi falado acima tem a questão da maneira como você está fazendo a leitura das posições do vetor, que deve ser de 15 posições e não 5:

for(i = 0; i < 15; i++) {
    printf("Posicao [%d]: ", i);
    scanf("%d", &vetorA[i]);
}

 

Outro ponto é q o for abaixo, do modo como está, não tem como dar certo:

for(j = 1; j <= vetorA; j++)

esse for deve ir do 1 até q número? Seria o 15?

Se é isso ficaria assim:

for (j = 1; j <= 15; j++)

E na condição do primeiro if seria isso:

if (vetorA[i] % j == 0)

Vê se ajuda, ok?

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, giu_d disse:

@iHollyZinhO Olá. Além do q foi falado acima tem a questão da maneira como você está fazendo a leitura das posições do vetor, que deve ser de 15 posições e não 5:


for(i = 0; i < 15; i++) {
    printf("Posicao [%d]: ", i);
    scanf("%d", &vetorA[i]);
}

 

Outro ponto é q o for abaixo, do modo como está, não tem como dar certo:


for(j = 1; j <= vetorA; j++)

esse for deve ir do 1 até q número? Seria o 15?

Se é isso ficaria assim:


for (j = 1; j <= 15; j++)

E na condição do primeiro if seria isso:


if (vetorA[i] % j == 0)

Vê se ajuda, ok?

 

Acho que ele colocou 5 pra testar. 

 

Sobre os índices dos vetores, não comentei porque já aconteceu de sumir quando o moderador coloca o código no CODE.

  • Curtir 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescento ainda o fato que essa programação não "retornou".

Programa que lê um vetor de 15 posiçoes e retorne um outro vetor dos ns primos.

Entendemos programa como sendo um outro nome para rotina, no caso do C toda função é um ou mais programa. Ainda sim, mesmo que use a função main ele não deve constar como rotina para solução, pois o interessante é que haja um "retorno" como está no título do poster.  Esse retorno pode ser figurado, ou seja não precisaria se de fato retornado pela declaração return, podendo para isso utilizamos um de outro tipo de retorno, retorno por parâmetro de saída da lista de parâmetros da função é um tipo de retorno. ▎

 

Para ilustração segue o seguinte protótipo de exemplo:

int* primos( const int largura, const int conjunto[largura],int primos[largura] )
{
  /* Aqui vem o algoritmo */
  return ((int*)primos);
}

Observe que os dois primeiros parâmetros foram modificados por const indicando que esses não serão modificados, já o último não tem a mesma indicação. Essa artimanha pode ser vista nas funções da  biblioteca string (string.h). Damos boa indicação de qual é qual, assim os parâmetros de saída são diferenciados dos de entrada. ▎

 

 

Espero que tenha sido útil,

de qualquer forma foi um prazer.

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citação

 

Agradeço à todos! O problema principal era o cont que faltava zerar a cada iteração. Os outros detalhes, como o vetorA, foi no momento de colar aqui que a pagina retirou, mas no programa estava correto; sobre o tamanho do vetor, eu coloquei 5 posições para ser mais pratico para efeitos de teste quando for digitar os valores kkk, mas agradeço por responderem! :)

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×