JOAOBERNARD070 Posted October 30, 2022 at 01:46 AM Report Share #627857 Posted October 30, 2022 at 01:46 AM #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", ÷ndo); 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 More sharing options...
thoga31 Posted October 31, 2022 at 07:18 PM Report Share #627908 Posted October 31, 2022 at 07:18 PM 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. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
JOAOBERNARD070 Posted November 2, 2022 at 02:48 PM Author Report Share #627930 Posted November 2, 2022 at 02:48 PM 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 More sharing options...
iznougudpt Posted November 2, 2022 at 05:03 PM Report Share #627933 Posted November 2, 2022 at 05:03 PM Não podes usar a libraria math.h? O que queres calcular é bastante simples, Quociente= floor(dividendo / divisor); Resto = dividendo % divisor Link to comment Share on other sites More sharing options...
thoga31 Posted November 2, 2022 at 06:10 PM Report Share #627936 Posted November 2, 2022 at 06:10 PM 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 More sharing options...
iznougudpt Posted November 4, 2022 at 09:53 AM Report Share #627976 Posted November 4, 2022 at 09:53 AM Em 02/11/2022 às 18:10, thoga31 disse: 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. Só não tinha a certeza se arredondava sempre para baixo ou não por isso adicionei o floor(). Link to comment Share on other sites More sharing options...
thoga31 Posted November 4, 2022 at 07:20 PM Report Share #627987 Posted November 4, 2022 at 07:20 PM 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. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
nadi ols Posted November 12, 2022 at 06:23 PM Report Share #628145 Posted November 12, 2022 at 06:23 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now