Jump to content
roberto96fs

[Resolvido] Divisão por subtracções sucessivas

Recommended Posts

roberto96fs

boa noite, necessito de fazer um programa em python onde faz-se uma divisão através de subtracções sucessivas! nao consigo programar isso nem por nada. tenho ate a resoluçao porem nao consigo coloca-la pra python:

1.       Leio A

1.1   Se A=0, informe Divisão=0 e Resto=0

1.2   Se não, vá para 2

2.       Leio B

2.1   Se B=0, informe ERRO

2.2   Se não, vá para 3

3.       A>0?

3.1   Se sim, C recebe A

3.2   Se não, C recebe │A│

4.       B>0?

4.1   Se sim, D recebe B

4.2   Se não, D recebe │B│

5.       Zera a variável de nome Y

6.       C>=D?

6.1   Se sim, vá para 7

6.2   Se não, vá para 8

7.       Enquanto C>=D faça:

7.1   C recebe um novo valor, igual a C-D

7.2   Y recebe 1

7.3   Quando C<D, vá para 9 ou 10

8.       Quando C<D, informe Quociente=0, Resto=A

9.       A>0

9.1   E B>0, informe Y=Quociente, Resto=C

9.2   E B<0, informe –Y=Quociente, Resto=C

10.   A<0

11.1 E B<0, informe Y=Quociente, Resto= -C

11.2 E B>0, informe –Y=Quociente, Resto= -C

 

me ajudem por favor!!!!

Edited by pwseo
Alterado "subtracção através de divisões sucessivas" para "divisão através de subtracções sucessivas"

Share this post


Link to post
Share on other sites
pwseo

@roberto96fs,

O que já conseguiste fazer? Já tens aí um algoritmo que consegue resolver o problema que pretendes resolver... Tens alguma dúvida específica sobre como escrever isso em Python? E outra questão: conseguiste perceber o conceito por detrás do algoritmo utilizado?

Share this post


Link to post
Share on other sites
shumy

Não será antes divisão por subtrações sucessivas?

  • Vote 1

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
thoga31

Uma vez que o tópico já vai com tanto tempo, deixo uma possível solução traduzindo directamente o algoritmo proposto. Testado no Ideone.

def divisao(a, b):
	div, res = 0, 0
	if b == 0:
		raise ZeroDivisionError("Divisao por zero")
	if a != 0:
		c, d, y = abs(a), abs(b), 0
		while c >= d:
			c -= d
			y += 1
		else:
			div, res = 0, a
		if a > 0:
			div, res = y if b>0 else -y, c
		else:
			div, res = y if b<0 else -y, -c
	return (div, res)

 

Edited by thoga31
Mudança da classe de erro/excepção
  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

@thoga31, apenas um pequeno reparo: já existe uma classe ZeroDivisionError que podes utilizar em vez de ValueError para sinalizar a divisão por zero.

@shumy tens toda a razão. Como o autor não se pronunciou alterei o título e post de abertura do tópico para reflectir correctamente de que se trata.

Share this post


Link to post
Share on other sites
thoga31
Em 08/09/2018 às 08:50, pwseo disse:

já existe uma classe ZeroDivisionError que podes utilizar

Obrigado @pwseo. Já editei o código para reflectir a tua dica ;)


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.