domingo, 23 de agosto de 2015

M.M.C e M.D.C entre dois números

Os cálculos envolvendo MMC e MDC são relacionados com múltiplos e divisores de um número natural. Entendemos por Múltiplo, o produto gerado pela multiplicação entre dois números.
Observe os exemplos abaixo:
Dizemos que 30 é múltiplo de 5, pois 5 * 6 = 30. Existe um número natural que multiplicado por 5 resulta em 30. Veja mais alguns números e seus múltiplos:

M(3) = 0, 3, 6, 9, 12, 15, 18, 21, ...
M(4) = 0, 4, 8, 12, 16, 20, 24, 28, 32, ...
M(10) = 0, 10, 20, 30, 40, 50, 60, ...
M(8) = 0, 8, 16, 24, 32, 40, 48, 56, ...
M(20) = 0, 20, 40, 60, 80, 100, 120, ...
M(11) = 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, ...

Os múltiplos de um número formam um conjunto infinito de elementos.
Se quizer saber mais sobre o assunto acesse o seguinte link abaxo:
http://www.brasilescola.com/matematica/calculo-mmc-mdc.htm

Foi partindo destas lógicas que desenvolvi este ótimo exemplo de como mostrar o m.m.c e m.d.c entre dois números porém entre os 10 primeiros múltiplos dos mesmos.

Breve descrição do funcionamento do programa:

Dois números são coletados pela entrada de dados, onde dentro de dois blocos comandado por dois laço for se separam os 10 primeiros múltiplos destes dois números, e rapidamente são copiados dentro de dois vetores previamente declarados.
Aqui entra a lógica principal do programa, um outro vetor que também foi declarado recebe a cópia apenas dos números que são comuns nos dois primeiros vetores que foram carregados com os 10 primeiros múltiplos de cada número.
Agora basta identificar qual é o menor e o maior elemento contido neste vetor, que são respectivamente o m.m.c e m.d.c dos dois números.
Código dedicado a estudantes e admiradores desta importante linguagem de programação.

Veja abaixo imagens do programa em execução:




Veja abaixo o código do programa:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void Janela5(){
    int lin, col;
    col = 0;system("Color 10");
    for ( lin = 2; lin <= 24; lin++ )
        for ( col = 2; col <= 78; col++ ){
            gotoxy(col,lin);textbackground(WHITE);printf(" ");
        }
}
int continuando ( ){
    int nr; do{system("cls");system("Color 90");Janela5();
    textcolor(LIGHTRED);gotoxy(28,5);printf("M.M.C E M.D.C ENTRE DOIS NÚMEROS");
    textcolor(BROWN);gotoxy(25,7);printf("Programa desenvolvido por:");
    textcolor(GREEN);gotoxy(52,7);printf("Samuel Lima");
    textcolor(BLACK);gotoxy(34,9);printf("sa_sp10@hotmail.com");
    textcolor(LIGHTBLUE);gotoxy(23,11);printf ("Digite ");
    textcolor(LIGHTRED);printf (" 0 ");
    textcolor(LIGHTBLUE);printf (" para sair ou ");
    textcolor(LIGHTRED);printf (" 1 ");
    textcolor(LIGHTBLUE);printf (" para continuar ");
    textcolor(LIGHTRED);gotoxy(24,13);
    scanf ( "%d", &nr );fflush(stdin);
    if( nr == 0 ){
        textcolor(LIGHTRED);gotoxy(36,18);printf("MUITO OBRIGADO");
        getche();exit(0);
    }else if( nr == 1 ){
        return 1;
    }
    textcolor(BLACK);gotoxy(36,16);printf ("\aopcão errada!");
    getche();
    }while ( 1 );
    return 1;
}
int main(){
    system ("title M.M.C E M.D.C ENTRE DOIS NÚMEROS");
    int Vet [ 10 ], vet [ 10 ], ve_t [ 10 ];
    int a = 0, b = 0, k = 0, h = 0, i = 0, j, l, mmc, mdc;
    continuando ( );system("cls");system("Color 90");Janela5();
        textcolor(LIGHTRED);gotoxy(26,3);printf("M.M.C E M.D.C ENTRE DOIS NÚMEROS");
    textcolor(LIGHTBLUE);gotoxy(32,5);printf("Digite um número: ");
    textcolor(LIGHTRED);scanf("%d", &j);
    textcolor(LIGHTBLUE);gotoxy(32,7);printf("Digite outro número: ");
    textcolor(LIGHTRED);scanf("%d", &l);
    textcolor(LIGHTBLUE);gotoxy(10,9);printf("Os 10 primeiros múltiplos de ");
    textcolor(LIGHTRED);printf("%d", j);
    textcolor(LIGHTBLUE);printf(" ==> ");textcolor(BLACK);
    for ( i = j; i < 10 * j; i++ ) {
        if ( i % j == 0 ){
            printf("%d ", i);
            vet [ a ] = i;
            a++;
        }
    }
    textcolor(LIGHTBLUE);gotoxy(10,11);printf("Os 10 primeiros múltiplos de ");
        textcolor(LIGHTRED);printf("%d", l);
        textcolor(LIGHTBLUE);printf(" ==> ");textcolor(BLACK);
    for ( i = l; i < 10 * l; i++ ) {
        if ( i % l == 0 ){
            printf("%d ", i);
            ve_t [ b ] = i;
            b++;
        }
    }
    for ( i = 0; i < 10; i++ ){
        for ( j = 0; j < 10; j++ ){
            if ( vet [ i ] == ve_t [ j ] ){
                Vet [ h ] = ve_t [ j ];
                h++;
            }
        }
    }textcolor(LIGHTRED);gotoxy(5,13);
    printf("Abaixo o M.M.C e M.D.C entre os 10 primeiros múltiplos destes números");
    mmc = Vet [ 0 ];
    for (i = 1; i < k - 1; i++) {
        if ( Vet [ i ] < mmc )
            mmc = Vet [ i ];
    }
    mdc = Vet [ 0 ];
    for (i = 1; i < h; i++) {
        if ( Vet [ i ] > mdc )
            mdc = Vet [ i ];
    }
    if( mmc == 0 ){
        textcolor(LIGHTBLUE);gotoxy(10,15);
        printf("Não há um M.M.C entre os 10 primeiros múltiplos destes números");
    }
    if( mmc > 0 ){
        textcolor(LIGHTBLUE);gotoxy(20,15);printf("O M.M.C entre os dois  números é ==> ");
        textcolor(LIGHTRED);printf("%d ", mmc );
    }
    if( mdc == 0 ){
        textcolor(LIGHTBLUE);gotoxy(10,17);
        printf("Não há um M.D.C entre os 10 primeiros múltiplos destes números");
    }
    if( mdc > 0 ){
        textcolor(LIGHTBLUE);gotoxy(20,17);printf("O M.D.C entre os dois  números é ==> ");
        textcolor(LIGHTRED);printf("%d ", mdc );
    }Sleep(1800);
    textcolor(LIGHTRED);gotoxy(36,23);printf("MUITO OBRIGADO");
        getche();
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.