Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Algoritmos para Cálculo do MDC e Simplificação de Frações, Notas de aula de Introdução à Computação

Algoritmos para calcular o máximo divisor comum (mdc) de dois inteiros e simplificar frações. Inclui especificações detalhadas dos módulos auxiliares mdc() e simplifica(), bem como o algoritmo principal principal() que obtém a fração equivalente irredutível. O documento também fornece exemplos de simulação dos algoritmos, mostrando o passo a passo do processo de cálculo e simplificação. Além disso, o documento aborda a classificação de números como abundantes, deficientes ou perfeitos, utilizando um algoritmo para somar os divisores próprios de um valor inteiro. Este material é útil para estudantes de ciência da computação e áreas relacionadas, oferecendo uma base sólida em algoritmos e programação.

Tipologia: Notas de aula

2018

Compartilhado em 11/08/2025

hugo-da-silva-souza-3
hugo-da-silva-souza-3 🇧🇷

6 documentos

1 / 65

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
modularização módulos auxiliares funções auxiliares
propósitos gerais
particionar a resolução de um problema
distribuir o serviço de programação
reutilizar módulos já construídos
facilitar o trabalho de manutenção
1
#include <iostream >
using namespace std;
void maiorvalor (float a, float b, float c, float &m){
m=a;
if(b>m) m=b;
if(c>m) m=c;
}
void menorvalor (float a, float b, float c, float &m){
m=a;
if(b<m) m=b;
if(c<m) m=c;
}
int main( ){
float n1, n2, n3, ma, me, nfinal ;
cout<<"primeira nota? "; ci n>>n1;
cout<<"segunda nota? "; ci n>>n2;
cout<<"terceira nota? "; ci n>>n3;
maiorvalor(n1, n2,n3,ma);
menorvalor(n1, n2,n3,me);
nfinal=(3*me+7*ma)/10 ;
cout<<"nota fina l: "<<nfina l<<endl;
system("pause"); return(0);
}
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41

Pré-visualização parcial do texto

Baixe Algoritmos para Cálculo do MDC e Simplificação de Frações e outras Notas de aula em PDF para Introdução à Computação, somente na Docsity!

modularização – módulos auxiliares – funções auxiliares

propósitos gerais

• particionar a resolução de um problema

• distribuir o serviço de programação

• reutilizar módulos já construídos

• facilitar o trabalho de manutenção

#include using namespace std; void maiorvalor(float a, float b, float c, float &m){ m=a; if(b>m) m=b; if(c>m) m=c; } void menorvalor(float a, float b, float c, float &m){ m=a; if(b<m) m=b; if(c<m) m=c; } int main( ){ float n1, n2, n3, ma, me, nfinal; cout<<"primeira nota? "; cin>>n1; cout<<"segunda nota? "; cin>>n2; cout<<"terceira nota? "; cin>>n3; maiorvalor(n1,n2,n3,ma); menorvalor(n1,n2,n3,me); nfinal=(3me+7ma)/10; cout<<"nota final: "<<nfinal<<endl; system("pause"); return(0); }

Considere o seguinte problema:

“Conhecendo-se numerador e denominador de uma fração, como obter o

numerador e o denominador da fração irredutível equivalente?”

A resolução pode ser representada pelo seguinte esboço de algoritmo:

  • entrar numerador;
  • entrar denominador;
  • simplificar a fração;
  • exibir o resultado.

Nesse exemplo de esboço é empregada uma abstração de processo:

simplificar a fração

mecanismo de funcionamento

  • o módulo “chamador” aciona o módulo auxiliar - nesse momento a execução

do módulo “chamador” é suspensa;

  • o módulo auxiliar passa a ser executado;
  • ao final da execução do módulo auxiliar, a execução do módulo “chamador”

é retomada, a partir do ponto onde foi acionado o módulo auxiliar.

  • no momento em que o módulo “chamador” aciona o módulo auxiliar , pode

ocorrer o “trânsito” de dados do módulo “chamador” para o módulo

auxiliar;

  • ao final da execução do módulo auxiliar, quando a execução do módulo

“chamador” é retomada, pode ocorrer o ”trânsito” de dados do módulo

auxiliar para o módulo “chamador”;

  • esse “trânsito” de dados é estabelecido por meio de parâmetros.

mecanismo de funcionamento

novamente vamos considerar o problema:

“Conhecendo-se numerador e denominador de uma fração, como obter o

numerador e o denominador da fração irredutível equivalente?”

A resolução pode ser representada pelo seguinte esboço de algoritmo:

  • entrar numerador;
  • entrar denominador;
  • simplificar a fração;
  • exibir o resultado.

vamos desenvolver o método de resolução com a elaboração

do módulo principal e dois módulos auxiliares:

um módulo auxiliar para realizar o cálculo do máximo divisor comum

e outro módulo auxiliar para simplificar a fração

obs: no processo de simplificação é necessário obter o máximo divisor comum do numerador e denominador

módulo auxiliar mdc( )

especificação

objetivo: realizar o cálculo do m.d.c. de dois inteiros parâmetros de entrada: x, y - tipo inteiro parâmetro de saída: mdc - tipo inteiro (com o valor de max) variáveis locais: resto, max – tipo inteiro corpo

mdc(x,y)

resto x MOD y;

enquanto resto>0 faça

x y; y resto;

resto x MOD y;

max y;

retorne(max);

int mdc(int x, int y){ int resto, max; resto=x%y; while(resto>0){ x=y; y=resto; resto=x%y; } max=y; return(max); }

módulo auxiliar simplifica( )

especificação

objetivo: simplificar uma fração parâmetros de entrada e saída: n, d - tipo inteiro variável local: md – tipo inteiro corpo

simplifica(n,d)

md mdc(n,d);

n n DIV md;

d d DIV md;

void simplifica(int &n, int &d){

int md; md=mdc(n,d); n=n/md; d=d/md; }

módulo auxiliar simplifica( )

especificação

objetivo: simplificar uma fração parâmetros de entrada e saída: n, d - tipo inteiro variável local: md – tipo inteiro corpo

simplifica(n,d)

md mdc(n,d);

n n DIV md;

d d DIV md;

void simplifica(int &n, int &d){

int md; md=mdc(n,d); n=n/md; d=d/md; } parâmetros de entrada e saída passagem por referência

articulação

int main( ){ int num, den; cout<<"numerador? "; cin>>num; cout<<"denominador? "; cin>>den; simplifica(num, den); cout<<"equivalente: "<<num<<"/"<<den<<endl; system("pause"); return(0); }

void simplifica(int &n, int &d){

int md; md=mdc(n,d); n=n/md; d=d/md; }

int mdc(int x, int y){ int resto, max; resto=x%y; while(resto>0){ x=y; y=resto; resto=x%y; } max=y; return(max); }

articulação

void simplifica(int &n, int &d){

int md; md=mdc(n,d); n=n/md; d=d/md; }

#include #include using namespace std; int mdc(int x, int y){ int resto, max; resto=x%y; while(resto>0){ x=y; y=resto; resto=x%y; } max=y; return(max); } void simplifica(int &n, int &d){ int md; md=mdc(n,d); n=n/md; d=d/md; } int main( ){ int num, den; cout<<"numerador? "; cin>>num; cout<<"denominador? "; cin>>den; simplifica(num, den); cout<<"equivalente: "<<num<<"/"<<den<<endl; system("pause"); return(0); }

simulação dos algoritmos – supor que a fração de entrada seja 72/180.

mdc(x,y) resto x MOD y; enquanto resto>0 faça x y; y resto; resto x MOD y; max y; retorne(max); simplifica(n,d) md mdc(n,d); n n DIV md; d d DIV md; principal( ) imprima "numerador? "; leia num; imprima "denominador? "; leia den; simplifica(num,den); imprima "equivalente: ",num,"/",den; quadro de variáveis/parâmetros num den janela de execução

simulação dos algoritmos – supor que a fração de entrada seja 72/180.

mdc(x,y) resto x MOD y; enquanto resto>0 faça x y; y resto; resto x MOD y; max y; retorne(max); simplifica(n,d) md mdc(n,d); n n DIV md; d d DIV md; principal( ) imprima "numerador? "; leia num; imprima "denominador? "; leia den; simplifica(num,den); imprima "equivalente: ",num,"/",den; quadro de variáveis/parâmetros num den 72 janela de execução numerador? 72

simulação dos algoritmos – supor que a fração de entrada seja 72/180.

mdc(x,y) resto x MOD y; enquanto resto>0 faça x y; y resto; resto x MOD y; max y; retorne(max); simplifica(n,d) md mdc(n,d); n n DIV md; d d DIV md; principal( ) imprima "numerador? "; leia num; imprima "denominador? "; leia den; simplifica(num,den); imprima "equivalente: ",num,"/",den; quadro de variáveis/parâmetros num den 72 janela de execução numerador? 72 denominador? _