Ir ao conteúdo
  • Cadastre-se

C exercicio em c - mmc


Loris_mini

Posts recomendados

Meu programa nao roda:

 

Crie um procedimento que receba 2 números, calcule e imprima o MMC destes

#include <stdio.h>
#include <stdlib.h>


int mmc(int num1, int num2, int a);
 int main ()
  {
    int resto, a, b, num1,num2;

    a = num1;
    b = num2;

    do {
        resto = a % b;

        a = b;
        b = resto;

    } while (resto != 0);

    return 0;
}
int mmc (int num1, int num2,int a)
{
    return( num1 * num2) / a;
}

números.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Laryssa Silva    exatamente , mas creio que você ainda não sabe o que é inicializar variáveis , 

int resto, a, b, num1,num2;  // aqui o compilador vai criar essas 
                             // variáveis , mas elas terão valores insabido
a = num1;                    // aqui a variáveL a receberá o valor de num1
                             // mas que valor será esse ? ninguém sabe !
b = num2;                    // aqui a mesma coisa

para criar uma variável , o compilador apenas reserva um espaço na memória ram e determina que aquela area se chama o nome da variavel , mas nessa area com certeza haverá algum valor guardado ali , e pode ser qualquer valor e ninguém sabe Qual é .  e então quando se diz para inicializar a variável seria algo assim 

int resto, a, b, num1=0,num2=1;  // inicializou num1 e num2 
                                 // resto a e b não precisa pois receberão valores em seguida
a = num1;                        // assim a variáveL a receberá o valor zero  
b = num2;                        // assim a variáveL b receberá o valor um

e outra coisa é que você em nenhum momento chamou e nem usou a função mmc   .

Link para o comentário
Compartilhar em outros sites

28 minutos atrás, Laryssa Silva disse:

Não seriam essas?

 

28 minutos atrás, Laryssa Silva disse:

int resto, a, b, num1,num2;

 

Bom palpite. Essas são todas as variáveis de seu programa afinal.

 

 

Quanto vale cada uma? O que representam? 

  • use nomes mais expressivos
  • enquanto estiver testando use valores fixos e significativos até ter os resultados esperados. Estamos falando de MMC então use algo como 20 e 1, 24 e 6, 12 e 24, coisas assim
  • decjare uma variável por linha. É o mesmo preço. E é melhor para você e seu programa
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Laryssa Silva Tens as partes de uma resposta e fora de seus lugares. O procedimento é seu método sem necessidade de valor no retorno: "

Crie um procedimento que receba 2 números, calcule e imprima o MMC destes"

void mmc (int num1, int num2) {

	int resposta= 0, resto= 0, a= 0, b= 0;

	a = num1;
	b = num2;

	//... sequencia de divisoes sucessivas
  
	resposta= (num1 * num2) / a;
  
	printf ("%s%d%s",
	"Minimo Multiplo Comum ..: ", resposta, "\n");
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Digitando direto no bloco de notas o método do ensino fundamental:

 

12  15  18  |  2
 6  15   9  |  2
 3  15   9  |  3
 1   5   3  |  3
 1   5   1  |  5
 1   1   1  |  2*2*3*3*5 = 180

180 = 12 x 15
180 = 15 x 12
180 = 18 x 10

 

Faça o mesmo e não pode dar errado.

 

Antes de tudo escreva uma função que devolve o próximo numero primo, porque ajuda bem....

 

    int proximo_primo(); // a cada chamada devolve o proximo

 

é básico para esse método. Aí você entra com a lista de números e retorna o mmc como em 

 

    int    mmc ( int n, int val[] );

 

E pode chamar como em 

 

#include <stdio.h>

int    mmc(int, int[]);
int    proximo_primo();

int main()
{
    int m = mmc ( 3, (int[]){  12, 15, 18 } ); 
    printf("MMC calculado =  %d\n", m);
    return 0;
}

int    proximo_primo(){   return 0; };

int    mmc(int N, int val[])
{
    printf( "mmc(): %d valores: ", N);
    for ( int i = 0; i<N; i+=1 ) printf( "%d ", val[i] );
    printf("\n");
    return 1280;
};

 

Que já mostra 

 

ps > gcc -o tst -Wall -std=c17 xx.c
ps > ./tst
mmc(): 3 valores: 12 15 18 
MMC calculado =  1280

 

e pode ser um bom começo :) 

 

 

Note que como os números primos não costumam mudar ;) sempre se pode usar uma tabela ao invés de ficar calculando toda vez a mesma coisa para os mesmos resultados

Em muitos casos pode ser mais fácil deixar a lista de valores em aberto, como em printf() ou scanf() e usar um trem chamado varargs. Vou escrever um exemplo porque sei que não é comum. 

 

Um programa assim

 


int    mmc( unsigned, ... );

int main(void)
{
    printf("MMC calculado =  %d\n", mmc ( 3, 12, 15, 18 ) );
    printf("MMC calculado =  %d\n", mmc ( 2, 12, 15 ) );
    printf("MMC calculado =  %d\n", mmc ( 5, 12, 15, 18, 9, 10 ) );
    return 0;
}

 

o primeiro parâmetro de mmc()  é, claro, o número de argumentos. Os 3 pontos indicam o esperado, como em português: o resto dos argumentos

 

Rodando vem

 

ps > gcc -o tst -Wall -std=c17 var.c
ps > ./tst
mmc(): 3 valores: 12 15 18 
MMC calculado =  1280
mmc(): 2 valores: 12 15
MMC calculado =  1280
mmc(): 5 valores: 12 15 18 9 10
MMC calculado =  1280
ps > 

 

para esse código

 

#include <stdarg.h>
#include <stdio.h>

int    mmc( unsigned, ... );

int main(void)
{
    printf("MMC calculado =  %d\n", mmc ( 3, 12, 15, 18 ) );
    printf("MMC calculado =  %d\n", mmc ( 2, 12, 15 ) );
    printf("MMC calculado =  %d\n", mmc ( 5, 12, 15, 18, 9, 10 ) );
    return 0;
}

int    mmc(unsigned N, ...)
{
    va_list valores;
    va_start ( valores, N );
    printf( "mmc(): %d valores: ", N);
    for ( int i = 0; i<N; i+=1 ) printf( "%d ", va_arg ( valores ,int ));
    va_end (valores);
    printf("\n");
    return 1280;
};

 

Mas provavelmente o mais prático seria usar a linha de comando e um programa mmc assim
 

mmc 12 15 18

 

E o programa mostrar o tal MMC, sem frescura, interação ou leituras adicionais

 

PS> MMC 12 15 18
PS> MMC = 180
PS>
PS> MMC 2 4
PS> MMC = 4
PS>

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...