Ir ao conteúdo

Posts recomendados

Postado

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


 

 

Postado

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

Postado

@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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!