Ir ao conteúdo

C Programa de divisão sem div(/) e sem mod(%)


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado

boa noite galera, preciso fazer um programa que divida dois numeros e exiba o resto e o quociente(resultado),

não sei o que estou fazendo de errado, mas depois que digita o primeiro número o programa fecha, e além disso a divisão vem com resultado errado

meu código:

#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    setlocale(LC_ALL, "portuguese");
    int n1, n2;
    int result2=0, aux=0, resto=0;
    printf("\nInsira aqui os números a serem divididos: ");
    printf("\nDividendo: ");
    scanf("%d", n1);
    printf("\nDivisor: ");
    scanf("%d", n2);
    printf("\n");
    printf("\nDivisão de %d por %d", n1, n2);
    printf("\n");
    aux = n1;
    for (n1=n1; n1>=0; n1--)
    {
        n1 = (n1-n2);
        result2 = result2+1;
    }
    resto=n1;
    printf("\nResultado é: %d", result2);
    printf("\nResto é: %d", resto);
}

 

  • Solução
Postado

@Ragnarbrody Erros:

Faltou & nos scanfs;

Usou muitas bibliotecas, não precisou de todas, só stdio.h e locale.h são suficientes;

Não precisa colocar n1=n1, n1 é igual a si mesmo, pode deixar vazio dentro do for mesmo;

Está subtraindo 1 de n1 a cada passagem no laço, não faz sentido fazer isso;

Está somando 1 no resultado, mas poderia fazer isso dentro do for, com result2++;

O loop não deve persistir enquanto n1>=0, restos podem ser maiores que 0, deveria ser enquanto n1>=n2;

Lembre que o resultado é o quociente, chame de quociente;

Comente seu código, assim todos podem entender o que se passa nele.

//Divisão e módulo 

#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");
    
    int n1, n2, quociente, resto;
    
    printf("Insira aqui os números a serem divididos: ");
    
    printf("\nDividendo: ");
    scanf("%d", &n1);
    printf("\nDivisor: ");
    scanf("%d", &n2);
    
    printf("\nDivisão de %d por %d:", n1, n2);
    
    for (; n1>=n2; quociente++)
    {
        //Loop para subtrair n2 de n1, até que n1 seja menor que n2
        n1 -= n2;
    }
    resto = n1; //Resto é o que sobrar de n1
    printf("\nQuociente é: %d", quociente);
    printf("\nResto é: %d", resto);
}

 

  • Obrigado 2
Postado

@Lucca Rodrigues Eu usei tantas bibliotecas porque esse programa será o subprograma de um principal que estou trabalhando como trabalho para a faculdade, este era pra ser o ultimo subprograma, ai para não postar o programa inteiro eu apenas adaptei seu código para virar um programa solo e copiei as bibliotecas do programa principal, estava com dificuldade de gerar a divisão, mas com sua ajuda consegui, obrigado

  • Curtir 2
  • Membro VIP
Postado

Complementando:

Faltou inicializar o valor de quociente. Ex.:

int n1, n2, quociente = 0, resto;

 

adicionado 6 minutos depois

Em relação ao uso do for, por definições, usaria algo assim:

    for (; n1>=n2; n1-=n2)
        quociente++;

Vai dar no mesmo, mas me parece fazer mais sentido para os parâmetro do for.

 

 

adicionado 9 minutos depois

Ou ainda:

    for (resto=n1; resto>=n2; resto-=n2)
        quociente++;

Desta forma preservando o valor de n1, a também sendo mais próximo do fluxo de uma divisão manual...

  • Curtir 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!