Ir ao conteúdo

Posts recomendados

Postado

image.thumb.png.fc02cbc1c78ffc66e084f75cd5e67885.png

 

Estou tentando resolver tal questão, mas estou com dúvida nas restrições. O meu código é este:

 

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

int main() {
	int num1;
	int num2;
	
	num1 = rand()%100;
	num2 = rand()%100;
	
	int divide (int num1, int num2);
	
	divide (num1, num2);	
	
	return 0;
}

int divide (int num1, int num2) {
	
	if (num1 % num2 == 0) {
		printf("divisivel");
	}
	
	if (num1 < num2) {
		printf("nao divisivel");
	}
}

 

Postado

@programadornovatoc ,acredito que é isso!

 

E ao invés de atributos aleatórios atributos de entrada, ou seja, use o padrão de entrada

Sem interação? Acredito que seja sem mensagens ou instruções.

 

O enunciado também diz, nas entrelinhas, que a resposta retorna para programa principal (função main).

 

 

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

  
int divisivel (int num1, int num2);

int main(void)
{
	int num1= 0, num2= 0;


	scanf(" %d",&num1);
	scanf(" %d",&num2);

	printf("%s",divisivel(num1,num2)? "divisivel \n":"nao divisivel \n");
	return 0;
}

int divisivel(int num1,int num2) { return !(num1%num2); }

 

Postado
Em 17/08/2019 às 10:39, programadornovatoc disse:

mas estou com dúvida nas restrições

 

  • a restrição (a) indica que não deve ler os valores ou mostrar qualquer resultado na função, que deve apenas calcular o resultado e devolver
  • a restrição (b) não é bem uma restrição: é apenas o objetivo
Citação

Um inteiro A é dito divisível por B se o resto da divisão de A por B é zero

 

Em relação ao seu código:

 

divide.png.b75d14b3635feb10cddc2f1d9bd36585.png

A relação de divisão é digital: ou A divide B ou A não divide B, para quaisquer A e B. Então poderia já imprimir "nao divisivel" numa clausula else do primeiro if. E se num2 for maior que num1 não vai imprimir nada? Está errado. Para num1 = 100 e num2 = 99 por exemplo, não vai mostrar nada

 

Talvez devesse usar simplesmente os nomes do enunciado, A e B ao invés de inventar novos nomes.

Entenda: se A < B então o resto da divisão de A por B é A, certo? afinal

Se A < B então        

A = 0 x B + A
        
Exemplo: A= 50, B = 100

50%100 = 50 porque 50 = 0x100 + 50

Se A<B então A%B = A       
        

E pelo enunciado não deve haver interação na função, certo? as instruções printf() devem estar em main() e apenas usar o resultado do cálculo feito na função divide().

main.png.a2a6c967323c644a95807d9f78058287.png

Note que o enunciado diz que

 

Citação

a leitura dos valores de entrada deve ser feita no programa principal

 

E assim usar rand()%100 não significa assim uma leitura. É mais um sorteio :D 

 

Como exemplo pode usar algo assim:

 

#include "stdio.h"

int divide(int A, int B)
{
    return ((A % B) == 0);
}    // end divide()

int main(int argc, char** argv)
{
    int A;
    int B;

    printf("A: ");
    scanf("%d", &A);
    printf("B: ");
    scanf("%d", &B);

    if ( divide(A, B) ) 
        printf("divisivel\n");
    else
        printf("nao divisivel\n");
    return 0;
}    // end main()

Que mostra:

A: 100
B: 50
divisivel

Ou

A: 50
B: 100
nao divisivel

por exemplo.

 

Note que em C o valor zero é considerado falso e qualquer outro é considerado verdadeiro.  E uma expressão lógica, como uma comparação, retorna zero se falsa ou 1 se verdadeira.

Exemplo:

    printf("%d\n", (int)(100==100));	// imprime 1
    printf("%d\n", (int)(100==99));	// imprime 0

E assim você pode escrever divide() como:

int divide(int A, int B)
{
	return ((A % B) == 0);
}	// end divide()

Bem de acordo com o conceito. Verdadeiro retorna verdadeiro...

Mas você também pode escrever 

Em 17/08/2019 às 12:38, MB_ disse:

int divisivel(int num1,int num2) { return !(num1%num2); }

 

Como sugerido por @MB_

 

Apenas vai estar negando duas vezes a condição em si. (num1%num2) retorna false para quando num1 divide num2. Isso porque zero é falso, como vimos. E então o operador ! inverte a condição para true e fica tudo certo. Alguém da matemática diria

Citação

o inverso da função inversa é a identidade.

 

Em C isso seria por exemplo

Citação

((!(!(A % B))) == (A % B))    // para qualquer condicao


:D ok isso foi só uma piada :D 

 

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!