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

PROGRAMA MULTIPLOS DE UM NUMERO II


roccoC/C++

Pergunta

DOMINGO, 17 DE FEVEREIRO DE 2013

Qualquer número multiplicado pela sequência dos números naturais, obtem - se os seus Múltiplos,

Veja abaixo a sequência dos Números Múltiplos de 2 até 5:

2 x 0 = 0

2 x 1 = 2

2 x 2 = 4

2 x 3 = 6

2 x 4 = 8

2 x 5 = 10

E assim vai, até onde você quizer.

Portanto 2, 4, 6, 8 e 10 são Múltiplos de { 2 }, Partindo desta lógica ficou fácil criar este programa em linguagem C.

Breve resumo do funcionamento:

Na primeira tela O Programa começa pedindo um intervalo ao usuário para estabelecer os limites mínimos e máximos dos Múltiplos.

Na segunda tela ele pede que se digite o número para verificação dos Múltiplos

dentro dos limites estabelecidos previamente.

Coloquei limites no programa para que não se use números muito longo, e ficou limitado até 10,

se for digitado um número acima disto um beep é acionado junto com uma mensagem para o usuário

advertindo para os limites do programa e volta para o início da função main fazendo o bom uso da recursividade ,

e isto dentro de uma chave while bem imprementada.

Más se for digitado um número dentro dos parâmetros estabelecidos o programa segue o seu curso entrando num bloco

comandado por um for que recebe auxílio de um if e uma variável que termina todo

o processo, recebendo a carga nas costas de todos os Múltiplos do número solicitado.

Eis as saídas deste Programa no cmd:

http://1.bp.blogspot.com/-GNULpvOr5gc/USH-...1600/Img+05.JPG

http://1.bp.blogspot.com/-EPKidgPjbMc/USEz...1600/Img+02.JPG

http://4.bp.blogspot.com/-cvHlZ9omU-w/USH-...1600/Img+06.JPG

http://1.bp.blogspot.com/-61DLjSRkHvQ/USH-...1600/Img+07.JPG

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

ficou assim.

#include <stdio.h>

int main(void){
    int d, a, m, numero, i, continua = 1;

    do{
        numero = i = d = a = m = 0;

        printf("\nPROGRAMA MULTIPLOS\n\n");
        printf("De: ");
        scanf("%d", &d);
        printf("Ate: ");
        scanf("%d", &a);

        printf("Entre com o numero de elementos entre 1 e 10: ");
        scanf("%d", &numero);

        if (numero >= 1 && numero <= 10)
            continua = 0;
        else
            printf("Numero inválido\n");

    }while(continua);

    for (i = d; i <= a; i++)
        if (!(i % numero)){
            printf("%d ", i);
            m++;
        }
    
    printf("\nEntre %d e %d temos %d multiplos\n", d, a, m);
    return 0;
}

Editado por vega
Link para o comentário
Compartilhar em outros sites

  • 0

Gostei!

Então vou te passar um exercício que me deu um bom trabalho, más fiz:

Crie um programa que leia uma sequência numérica do teclado, finalizando em -1, e que esta sequência

não ultrapasse 10 algarismo, e mostre o fatorial de cada algarismo da sequência digitada.

Link para o comentário
Compartilhar em outros sites

  • 0

Veja se é algo assim.

No programa abaixo limitei o número para o cálculo fatorial em 12, para não ultrapassar os 4 bytes de unsigned long int.

#include <stdio.h>

unsigned long int fatorial(int);

int main(void){
    int i = 0, n = 0, v[12] = {};
    
    printf("Entre com os digitos até 12 (-1 para sair)\n\n");

    for(;;){
        printf("#%d ", i + 1);
        scanf("%d", &v[i]);

        if (v[i] == -1) break;

        if (v[i] > 12)
            printf("Digito invalido, tente novamente\n");
        else
            i++;

        if (i >= 12) break;
    }
    
    printf("\n");

    for (n = 0; n < i; n++)
        printf("#%d Fatorial de %d = %lu\n", n + 1, v[n], fatorial(v[n]));
    
    printf("\n");

    return 0;
}

unsigned long int fatorial(int valor){
    if (!valor)
        return 1;
    else
        return valor * fatorial(valor - 1);    
}

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que eu não expliquei direito, a sequência é única finalizada por -1.

você digita alguns números e finaliza com -1. Não pode dá enter em cada algarismo digitado.

Depois o programa tem que mostrar o fatorial de cada algarismo da sequência digitada.

Tenta aih, quando você conseguir te mostro o meu código.

ABRAÇOS

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz algumas alterações no programa.

Mas não ficou exatamente como sua descrição.

Limitei a quantidade de dígitos para 10 e caso o usuário passe esse limite, o programa simplesmente ignora os digitos restantes.

#include <stdio.h>

#define MAX 10

unsigned long int fatorial(int);

int main(void){
    int i = 0;
    char v[MAX]={};
    
    printf("Entre com a sequencia numerica (maximo de 10 digidos): ");
    gets(v);

    for (i = 0; i < MAX; i++)
        if (v[i] != 0)
            printf("#%d Fatorial de %d = %lu\n", i + 1, v[i] - '0', fatorial(v[i] - '0'));
    
    return 0;
}

unsigned long int fatorial(int valor){
    if (!valor)
        return 1;
    else
        return valor * fatorial(valor - 1);    
}

Link para o comentário
Compartilhar em outros sites

  • 0

Seu código ficou bom, más quando pressiona -1, o programa imprime os resultados e fecha imediatamente.

só funciona bem se der enter.

não está pegando o fatorial de 10, más o meu também não pega.

meu código funciona muito bem com 9 algarismo não importando a ordem.

Veja a diferença entre os dois códigos; A linguagem C é impressionante, se outra

pessoa resolvesse este exercício usaria um outro método, más o importante mesmo

são os resultados. Postei em novo um tópico, confere lá.

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

  • 0

Fiz algumas alterações no código.

No caso do usuario digitar 0, o programa substitui para 10. Fiz uma pequena modificação na função fatorial também, para ficar com apenas uma linha.

Em relação ao -1, o programa não verifica mesmo. Já espera que o usuário entre apenas com dígitos numéricos entre 0 e 9.

#include <stdio.h>

unsigned long int fatorial(int);

int main(void){
    int i = 0, num = 0;
    char v[10]={};
    printf("\nPROGRAMA FATORIAL: ENTRE COM OS DIGITOS\n\n");
    printf(" 1| 2| 3| 4| 5| 6| 7| 8| 9| 0\n");
    printf("\n(0 = 10)\n\n: ");
    gets(v);

    for (i = 0; i < 10; i++){
        num = !(v[i] - '0') ? 10 : v[i] - '0';
        printf("#%d Fatorial de %d = %lu\n", i + 1, num, fatorial(num));
    }

    return 0;
}

unsigned long int fatorial(int valor){
    return !valor ? 1 : valor * fatorial(valor - 1);   
}

Editado por vega
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...