Jump to content

Divisão Inteira


JOAOBERNARD070

Recommended Posts

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

int main() {
    int dividendo, divisor, resto, temp_div, contaDigitos, quo_temp;
    char str_div[100] ;
    char aux_div[100];
    char quo_aux_div[100];
    char quo_div[100];
    printf("Dividendo: ");
    scanf(" %d", &dividendo);
    printf("Divisor: ");
    scanf(" %d", &divisor);
    int aux = dividendo;
    while (aux != 0){
        contaDigitos++;
        aux/=10;
    }
    int array_dividendo[contaDigitos];
    for (int i = 0; i < contaDigitos; ++i) {
        array_dividendo[contaDigitos-1-i] = dividendo % 10;
        dividendo/=10;
    }
    for (int i = 0; i < contaDigitos; ++i) {
        sprintf(aux_div, "%d", array_dividendo[i]);
        strcat(str_div, aux_div);
        temp_div = atoi(str_div);
        if(temp_div >= divisor) {
            quo_temp = temp_div / divisor;
            sprintf(quo_aux_div, "%d", quo_temp);
            strcat(quo_div, quo_aux_div);
            printf("\nQuociente: %d", quo_temp);
            resto = temp_div - (quo_temp * divisor);
            sprintf(str_div, "%d", resto);
        }
    }
    int quociente = atoi(quo_div);
    printf("\nQuociente: %d", quociente);
    printf("\nResto: %d", resto);
    return 0;
}

Boa noite, estou a ter um erro a imprimir o quociente no fim do ciclo for , mas não percebo o porquê alguém me podia ajudar sff

Link to comment
Share on other sites

Em 31/10/2022 às 19:18, thoga31 disse:

Qual o problema em específico? Qual é o objectivo deste código? Qual o comportamento esperado? O que acontece ao invés do esperado? Dá-nos um exemplo de input, output desejado e output obtido.

Por exemplo
Dividendo: 125
Divisor: 4

Output:
//Estes prints são realizados para confirmar que a divisão é feita
Dividendo: 3
Dividendo: 1

Dividendo: 0 // output obtido, o esperado era para ser 31
Resto: 1 // O resto está certo

Basicamente, o problema prende-se com o facto de não estar a ser atribuído o valor correto à variável quociente.

Link to comment
Share on other sites

A não ser que seja especificamente pedido outro método, então isto funciona perfeitamente:

#include <stdio.h>

int main(void) {
	int a, b, q, r;
	scanf(" %d %d", &a, &b);    // dividendo e divisor
	q = a / b;                  // quociente
	r = a % b;                  // resto
	printf("%d, %d\n", q, r);
	return 0;
}

 

1 hora atrás, iznougudpt disse:

Não podes usar a libraria math.h?

O que queres calcular é bastante simples, Quociente= floor(dividendo / divisor); Resto = dividendo % divisor

Não é precisa nenhuma biblioteca para isto. A divisão entre dois inteiros em C resulta num número inteiro — o quociente —, independentemente de serem divisíveis ou não.

 

Cumprimentos.

Knowledge is free!

Link to comment
Share on other sites

9 horas atrás, iznougudpt disse:

Só não tinha a certeza se arredondava sempre para baixo ou não por isso adicionei o floor().

É mesmo o resultado inteiro da divisão, sem arredondamento, uma vez que ambos os operandos são inteiros.

 

Deixo aqui para referência futura de visitante cibernáuticos. 😉

Dado que, matematicamente, n / d = q * d + r, onde:

  • n — numerador;
  • d — denominador;
  • q — quociente;
  • r — resto;

Então em C temos:

int n, d, q, r;
q = n / d
r = n % d

Por exemplo, para 29 / 10, teremos q = 2 (parte inteira da divisão real, 2.9) e r = 9.

 

O arredondamento só é de considerar quando pelo menos um dos operandos é float (ou outro tipo numérico real), o que retorna um resultado float. Por exemplo, para termos o resultado com vírgula flutuante, teríamos de fazer o typecast de um dos operandos, por exemplo:

int n = 29;
int d = 10;
float q;

q = (float) n / d;
// ou
q = n / (float) d;

 

Cumprimentos.

  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

No corpo do laço, é verificado a cada iteração se a variável de controle i é par ou não (verificando se o resto da divisão por 2 é 0 ou não) e a mensagem correspondente é impressa.

Jogue jogos divertidos aqui https://br.parimatch.com/pt/casino/instant-games/game/fugaso-magnify-man ganhando dinheiro de forma eficaz.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.