1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda c++

Discussão em 'Programação' iniciada por Mirage_3D, 8 de Fevereiro de 2009. (Respostas: 10; Visualizações: 1080)

  1. Mirage_3D

    Mirage_3D Suspenso

    Boas, comecei esta semana que passou a dar c++, e precisava de uma pequena ajuda a passar um pseudocodigo para c++...vou usar o dev

    pseudocodigo

    inicio
    ler base
    ler expoente
    Resultado = 0
    Aux = 0
    Para X = 1 ate expoente fazer
    Se aux = 0 então
    Resultado = base * base
    Aux = 1
    Se não
    Resultado = resultado * base
    Resultado = base * base
    Fim para
    Escrever resultado
    Fim

    Thanks
     
  2. Ronnie_03

    Ronnie_03 Power Member

    Eu posso tentar dar-te uma ajuda porque sei umas coisas de c++, mas como não percebo nada de pseudocódigo tens primeiro de me dizer o quê que queres que o programa faça exatamente.


    Cumps
     
  3. Mirage_3D

    Mirage_3D Suspenso

    O programa aceita um valor base e um valor expoente, e no fim apresenta o resultado....

    tipo valor base 10
    valor expoente 5

    o programa terá de fazer 10*10*10*10*10

    ...ou seja, o programa tem de mutiplicar o valor base pelas vezes do valor expoente, isto só usando o if for e while...

    cumps
     
  4. Código:
    double calcula(double base, double expoente)
    	{
    		if(expoente == 0)
    			return 1;
    		else if(expoente > 0)
    			return base * (calcula(base,expoente-1));
                    //expoente < 0
    		else
    			return calcula(1/base, -expoente);
    		
    	}
    
     
    Última edição: 9 de Fevereiro de 2009
  5. Mirage_3D

    Mirage_3D Suspenso

    Desde já agradeço pela ajuda animal666, mas estao por ai umas coisas que ainda aprendi pelo que nao entendo mto bem o que fazem....tipo o double... preciso de fazer o código com um ciclo for... é onde estou encravado...


    O código que tenho até agora feito é o seguinte.... apenas falta-me completar o for para funcionar....

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        int base;
        int expoente;
        int aux;
        int resultado;
           
        
        
        cout<< "introduz valor base \n";
        cin>> base;
        cout<< "introduz valor expoente \n";
        cin>> expoente;
        {
        for ( int x=1; x>expoente; x++)
        {
        if (aux==0)
        resultado = base * base;
        else if (aux==1)
        resultado = resultado * base;
        else
        resultado = base * base;
    }
    }
        cout<< "o resultado e " << resultado << " \n";
        
        
        
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    
     
    Última edição: 9 de Fevereiro de 2009
  6. ciclo for:
    Código:
    for(int i = 0; i != 5; ++i)
    {
    cout << i << endl; // repete 5 vezes
    }
    
    Não estou a perceber para que queres o aux...

    outra coisa 1000^0 = 1

    logo aqui

    Código:
    if (aux=0)
        resultado= base*base;
    
    deves ter

    Código:
    if (expoente [b]==[/b] 0)
        resultado = 1;
    
    == (comparação)
    = (para inicialização de variáveis)

    Código:
    int resultado = 1;
    for(int i = 0; != expoente; ++i)
    {
    //o teu codigo para calcular 
    
    }
    
    depois tens de ter em conta expoentes negativos:

    2^-1 é igual a (1/2)^1


    eu usei double para poder usar valores deste género 2,64^3,67 em vez de apenas valores inteiros

    outra coisa, tens um erro na forma como estás a calcular

    se o que tu queres é isto 10^5 = 10 * 10 * 10 * 10 * 10

    então não podes ter resultado * base pois estarias a fazer 10 * 5

    alias dessa forma o resultado seria igual a (10 * 5) * 5 * 5 * 5 * 5 se não estou em erro...
     
    Última edição: 9 de Fevereiro de 2009
  7. Ronnie_03

    Ronnie_03 Power Member

    Código:
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int expoente, base;
        cin >> expoente;
        cin >> base;
        expoente = expoente;
        double resultado = 1;
        if (expoente == 0)
        resultado = 1;
        else
        {
            for (int i = 0; i < expoente; i++)
            resultado *= base;
        }
        if (expoente < 0)
        resultado = 1 / resultado;
        
        cout << endl << resultado;
        cin.get();
        cin.get();
        return 0;
    }
    Vê se é mais ou menos isto que pretendes.

    Cumps
     
  8. Mirage_3D

    Mirage_3D Suspenso

    Já consegui por o code a funcar mas ficou bastante diferente do teu... ficou um pouco primitivo mas ainda estou a dar os primeiros passos... agora preciso de por este mesmo code que já funca mas funcar em função... com o void que acabei de aprender lol

    desde já o meu obrigado pela ajuda

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        int base=0;
        int expoente=0;
        int aux=0;
        int resultado=0;
        
       
        cout<< "introduz valor base \n";
        cin>> base;
        cout<< "introduz valor expoente \n";
        cin>> expoente;
        
        for ( int x=1; x<expoente; x++)
        {
        if (aux>0)
        {
        resultado = resultado * base;
        }
        else
        {
        aux++;
        resultado = base * base;
    }
    }
    
        cout<< "o resultado e " << resultado << " \n";
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    
     
  9. Ronnie_03

    Ronnie_03 Power Member

    Deixa ver se percebi, tu queres fazer uma função que calcule um numero elevado a um expoente e queres usar o void??

    Nesse caso a função não serve para nada, porque não vai devolver o resultado!!!
     
  10. Pode sempre enviar uma referência do tipo void calcula(int& resultado, int base, int expoente) :lol:
     
  11. OubeLa

    OubeLa Power Member

    Tal como disse o animal666 é possível alterar um valor com o void, passando uma referência. Uma referência é diferente da cópia na medida em que é passado um género de um apontador para o local da memória onde a variável está, e não é efectuada uma cópia para um novo local. Ao alterar o valor na função, ele é alterado na função que a chamou.

    Outra hipotese é declarar assim a função:

    void calcula(int* resultado, int base, int expoente)

    E chamar assim

    Código:
    int r;
    calcula(&r, 4, 2);
    
    Um exemplo de uso de apontadores e referências

    Código:
    #include <iostream>
    
    using namespace std;
    
    void calcula(int *valor)
    {
        *valor += *valor;
    }
        
    
    int main()
    {
        int i = 2;
        calcula(&i);
        cout << i << endl;
        return 0;
    }
    O resultado no ecrã seria 4.

    Ou então fazia-se exactamente como disse o animal666.

    Código:
    #include <iostream>
    
    using namespace std;
    
    void calcula(int &valor)
    {
        valor += valor;
    }
        
    
    int main()
    {
        int i = 2;
        calcula(i);
        cout << i << endl;
        return 0;
    }
     
    Última edição: 11 de Fevereiro de 2009

Partilhar esta Página