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

Dúvida em C


streex

Pergunta

Pessoal,

fiz um exercício que pedia pra imprimir na tela os 20 primeiros números da série de Fibonacci: 1, 2, 3, 5, 8, 13...

a lógica, pelo que parece tá certa, minha dúvida é com relação a aparição dos 20 numeros na tela.

vejam

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

int main ()
{
    int x=1, y=1, soma;
    
    printf("%d  %d ", x, y);
    
    for(x>0; x<2585; x++){
          
          soma = x+y;
          x = y-1;
          y = soma;
          
          printf(" %d ", soma);
          }

system("PAUSE");
return 0;
}

Só aparecem os 20 numeros se o valor de x ali no For foi menor que 2585... é o limite. Se for 2584 ele só mostra 19 numeros... e quanto menor o valor ali aparecem menos valores na tela.

Não sei porque isso acontece, não conseguir entender...

na verdade deveria ser x<=18 porque os 2 primeiros já são imprimidos antes...

Alguém da uma ajuda aí,

desde já agradeço.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

então cara

como estou começando tb n posso analizar mt bem seu código

mas eu fiz um exercicio desse semana retrasada tb

e fiz dessa maneira e funcionou perfeitamente

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

// EXERCICIO NÚMERO 4;

int main() {

int n1, n2, fib, n, controle;

system("cls");

n1 = 1;

n2 = 1;

controle = 1;

printf("N:"); // numero de repetições q o programa ira executar

scanf("%d", &n);

printf("%d \n%d\n", n1, n2);

while(controle <= n){

fib = n1 + n2;

n1 = n2;

n2 = fib;

printf("\n%d\n", fib);

controle ++;

}

getch();

return 0;

}

da uma olhada e tenta pegar algo do meu e aplicar no seu

tipo no seu laço for fazer for(var=0; var<=numero de repetições; var++)

acho q é por ai

Link para o comentário
Compartilhar em outros sites

  • 0

Eu acho que você deveria criar uma variável que contasse quantos termos já foram escritos, como no código a seguir:

#include <stdio.h>

int main() {
    int anterior = 0, atual = 1, fib, i;

    for (i = 1; i <= 20; i++) {
        fib = anterior + atual;
        printf ("%d termo: %d\n", i, atual);
        anterior = atual;
        atual = fib;
    }

    return 0;
}

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...