Ir para conteúdo
Fórum Script Brasil
  • 0

Exercicio (sequencia)


Lanah Winchester

Pergunta

Estou precisando de uma ajudinha nesse exercicio:

Escreva um programa que leia um valor n,e imprima todos os n termos da sequencia:

s=1,2,4,7,11,16,... << ESTA é a sequencia!

todos na mesma linha e no mesmo formato dos exemplos abaixo,com um espaço depois de cada virgula ,e o ponto no final.

Para n não positivo ,o programa exibe uma mensagem de erro.

Exemplo:

entrada: 1 saida: 1.

entrada: 4 saida: 1,2,4,7.

O problema é o seguinte,não consigo fazer com que o programa leia o valor e imprima os numeros DESTA sequencia...não encontro nenhum meio de fazer isso...

é nisso que eu preciso de ajuda.... :unsure:

Ainda sou iniciante em c/c++...estou no 2º periodo da facul de rede de computadores...eu acho que eu deveria saber mais do que eu sei...porem meu professor

não é uns do tipo melhor amigo do aluno...se ele puder deixar a coisas mais dificeis ,ele deixa...

Editado por Lanah Winchester
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá Lanah

A sequência tem o seguinte padrão:

1,(+1)2, (+2)4, (+3)7, (+4)11...

Isto é, não é uma PA nem uma PG, pois não tem razão fixa. O elemento seguinte é uma soma do anterior com um número que é uma unidade maior que o utilizado anteriormente.

Você pode montar uma função que receba, como parâmetro, a quantidade de números da sequência (imagino que você saiba como fazer). Dentro da função, o seguinte código deve imprimir a sequência:

printf("Sequencia:1, ");
aux=1;
for (i=1, i<=qtde_de_numeros,i++){
printf("%d, ",aux+i);
aux=aux+i;
}

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

RSalvador, sua função está errada. Tem de somar aux + 1 dentro do printf, e não aux + i.

Segue abaixo um código implementado no Dev-C++

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

int main()
{
    int n;
    int i;
    int x = 0;
    
    printf("Entre com o valor de n: ");
    scanf("%d",&n);
    
    if (n<=0) 
    {
       printf("ERRO!!!\n");
    }
    
    else
    {
       for (i=1;i<=n;i++)
       {
          if (i == n) printf("%d.\n",x+1);
          else printf("%d, ",x+1);
          x = x + i;
       }
    }
    
    system("pause");   
}

Editado por pedromss
Link para o comentário
Compartilhar em outros sites

  • 0
A função do RSalvador está correta, sim. O único erro foi que ele colocou "," ao invés de ";' dentro do for.

Ao invés de:

for (i=1, i<=qtde_de_numeros,i++){
Deveria ser:
for (i=1; i<=qtde_de_numeros;i++){

realmente esta parte está certa, eu me equivoquei, mas existe um outro erro. Se a variável qtde_de_numeros = 1, ele vai imprimir "Sequencia:1,2", quando na verdade deveria imprimir só o numero 1. ele sempre vai imprimir um numero a mais

Link para o comentário
Compartilhar em outros sites

  • 0

Verdade. Na função dele estava sempre saindo um elemento a mais (independentemente do valor de qtde_de_numeros). Nesse cas, basta trocar o <= por <.

Outra coisa que precisa ser feita é remover a vírgula do primeiro número (que é exibido de qualquer forma, com printf("Sequencia: 1");) e trocar:

printf("%d, ",aux+i);
Por:
printf(", %d",aux+i);

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jonathan e pedromss

Vocês estão certos quanto às correções, muito obrigado. Fiz rápido, sem prestar a devida atenção.

O problema que o pedromss levantou pode ser resolvido com a inclusão de um if antes do loop. Além disso, é necessário um if dentro do laço, como o pedromss colocou do código dele, para não ser impressa uma vírgula no final. Mas, com tudo isso, o programa já pode ficar mais caro que precisa. EDIT: o if dentro do laço dá certo, mas não é necessário. A solução que o Jonathan acaba de postar resolve e é mais barata.

Novamente, obrigado pelas correções. Abraços!

Editado por RSalvador
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...