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

Ajuda!!! Multiplicação Russa em C++. Não sei o que está errado.


Rony de Sena

Pergunta

#include <iostream>
using namespace std;

int multRussa(int a, int b);
int interna(int a, int b, int soma);

int multRussa(int a, int b) {
    int interna(int a, int b, int soma) {
        if(a == 0){
            return soma;
        }
        if(a % 2 != 0){
        soma += b;
        b = b * 2;
        return interna(a / 2, b, soma);
    }
    }
    int soma = 0;
    interna(a, b, soma);
}

int main(){

    int x, y, resultado;

    cout << "Informe o primeiro valor:"<< endl;
    cin >> x;

    cout << "Informe o segundo valor:" << endl;
    cin>> y;

    resultado = multiplicacaoRussa(x,y);
    cout << "Resultado: " << resultado << endl;
    return 0;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

***[ Olá ... ]

Fiz alguns correções; percebi que não a necessidade explicita de termos uma função interna a outra, que você chama um função dentro da main que não existe, e que parece ter confundido um pouco o método. Inclusive aconselho a verificar como é o procedimento mais um vez, sugiro esse site: https://www.somatematica.com.br/curiosidades/c59.php

metodo_multiplicacao_russa.cpp

// INCLUSOES                                                                  
#include <iostream>
// using namespace std;

// DEFINICOES                                                                 
// FUNCOES         
// multRussa ---operação de multiplicação pelo método camponês russo          
int multRussa(int a, int b)
{
	if (a == 0)
	{	return 0;}
	else if ((a % 2) == 1) {a -= 1;
		return multRussa(a/2, b*2) + b;
	}
	else 
	{	return multRussa(a/2, b*2);}
  return 0;
}

// main ---função principal do programa                                       
int main(void)
{
// TIPOS LOCAIS                                                               
	int x, y, rest;
	x = 0;    // multiplicando ---é o que será sucessivamente dividido por 2  
	y = 0;    // multiplicador ---é ... multiplicado por 2                    
	rest = 0; // Resultado ---é o produto da multiplicação                    
	
// ENTRADA DE DADOS                                                           
	std::cout <<("Informe o primeiro valor:")<< std::endl;
	std::cin  >>(x);

	std::cout <<("Informe o segundo valor:")<< std::endl;
	std::cin  >>(y);

// PROCESSAMENTO                                                              
	rest = multRussa(x, y);
	
// RESULTADO                                                                  
	std::cout <<("Resultado: ")<<(rest)<< std::endl;
	
// FIM                                                                        
  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,9k
×
×
  • Criar Novo...