Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
danilo  mendes dos santos

C++ fibonacci erro conversão de int para *int

Recommended Posts

ta dando erro conversão de int para *int

 

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

using namespace std;


const int i = 10;
void def ();
int fib(int n)
{
    if(n==1 || n==2)
        return 1;
    else
        return fib(n-1) + fib(n-2);


}

void troca_valores(int *ptrx, int *ptry)
{
    int auxiliar;
    auxiliar = *ptrx;
    *ptrx = *ptry;
    *ptry = auxiliar;

    return;
}

int main (void )
{
    int valor;
    int a, b, auxiliar, i, n;
    printf ("1 Para FUNCAO SEM ARGUMENTO");
    printf ("\n2 Para PARAMETO POR VALOR");
    printf ("\n3 Para PARAMETRO POR REFERENCIA");
    printf ("\n4 Para PARAMETRO CONSTANTE");
    printf ("\n5 Para DEFAULT\n");

    scanf("%d", &valor);

    switch ( valor )
    {
    case 1 :
        system("cls");
        a = 0;
        b = 1;
        printf("Digite um numero: ");
        scanf("%d", &n);
        printf("Serie de Fibonacci:\n");
        printf("%d\n", b);
        for(i = 0; i < n; i++)
        {
            auxiliar = a + b;
            a = b;
            b = auxiliar;
            printf("%d\n", auxiliar);
        }
        break;

    case 2 :
        system("cls");
        printf("Digite a quantidade de termos da sequencia de Fibonacci: ");
        scanf("%d", &a);
        printf("\nA sequencia de Fibonacci e: \n");
        for(b=0; b<a; b++)
        {
            printf("%d ", fib(b+1));
            getch();
        }
        break;

    case 3 :
        system("cls");
        printf("Digite o primeiro valor: ");
        scanf("%d", &auxiliar, a);
        printf("Digite o segundo valor: ");
        scanf("%d", &auxiliar, b);
        printf("voce digitou os valores na seguinte ordem: %d e %d\n", a, b);
        troca_valores(&auxiliar, a, &auxiliar, b);
        printf("Os valores trocados sao: %d e %d\n", a, b);
        getch();


        break;

    case 4 :

        system("cls");
        int x;
        a = 1;
        b = 1;
        printf("1: 1 \n");
        for (x = 2; x <= i; x++)
        {
            printf(x,":",b);
            b = a + b;
            a = b - a;
        }
        getch();
        break;

    case 5 :
        system("cls");
        
        getch();
        break;


    default :
        printf ("Valor invalido!\n");
    }

    getch();
    return 0;
}


 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@danilo mendes dos santos Olá. Vamos por partes. Seu código tem uns bugs q seria interessante corrigir.

Para o case 1 (opção 1),  a sugestão q eu daria p imprimir a série de Fibonacci seria essa:

 

a = 1;
b = 0;
printf("Digite um numero: ");
scanf("%d", &n);

printf("Serie de Fibonacci:\n");
for(j = 0; j < n; j++)
{
    auxiliar = a + b;
    a = b;
    b = auxiliar;
    printf("%d\n", auxiliar);
}
       

É mais interessante do q ter q imprimir o 1º número da séria em separado como vem fazendo e depois imprimir o restante da série

 

Para o case 2 (opção 2) seria essa a sugestão:

 

printf("Digite a quantidade de termos da sequencia de Fibonacci: ");
scanf("%d", &a);
printf("\nA sequencia de Fibonacci e: \n");
for(b = 1 ; b <= a; b++)
{
    printf("%d ", fib(b));
    getch();
}

Já agora para o q parece ser o motivo desse tópico, pelo q entendi seria inverter os valores de a e b.

Então seria isso:

 

case 3:
    system("cls");
    printf("Digite o primeiro valor: ");
    scanf("%d", &a);
    
    printf("Digite o segundo valor: ");
    scanf("%d", &b);
    printf("voce digitou os valores na seguinte ordem: %d e %d\n", a, b);
    troca_valores(&a, &b);
    printf("Os valores trocados sao: %d e %d\n", a, b);
    getch();

Além disso tem a questão de você estar declarando uma constante global do tipo int e chamando ela de 'i'. Mas, em seguida, no main, você declara uma variável local do tipo int q tbém chama de 'i'. O ideal seria ajustar isso

Outra sugestão q daria para melhorar seu código seria colocar o menu e o switch tudo dentro de um do/while, para q não aconteça como vem acontecendo de selecionar um opção e daí, depois do resultado ser impresso, o programa acabar.

Com respeito a opção 4 que está no case 4 não consegui entender o q você quer fazer. Se puder explicar melhor agradeço

Mas se deu para ajuda com o q passei aqui ok! 

adicionado 12 minutos depois

Outro ponto q esqueci de comentar: A biblioteca <iostream> e o namespace std são do C++ e não do C

Só que a questão é q seu tópico é referente ao C++ e seu código todo é em C (!?)

Editado por giu_d
corrigir comentário

Compartilhar este post


Link para o post
Compartilhar em outros sites

@danilo mendes dos santos  Creio q agora entendi a questão da opção 4. Seria isso?

 

const int k = 15;

// ...

case 4 :
    system("cls");
    int x;
    int temp = 0;
    a = 1;
    b = 0;        
    for (x = 0; x < k; x++)
    {
        temp = a + b;
        a = b;
        b = temp;
        printf("%d : ", temp);
    }
    getch();
    break;

Modifiquei a sua constante dando o nome a ela de K e o valor que atribuí a ela foi de 15

Não sei se isso mesmo q você queria.

Obs: Faltou o break no bloco default

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






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

×