Modulo

1. Modulo

Matias
matiasalexsandro

(usa Fedora)

Enviado em 02/07/2012 - 04:12h

bem pessoal tava tentando criar um programa em que calcule o modulo de um numero. por favor sejam compreensiveis pelo fato de ser ainda um novato. sem mais delongas:


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

int main()
{
int num;
puts("digite o numero");
scanf("%d" , &num);

if(num>=0)
{
printf("o modulo do %d e %d\n" , num num );

}

if(num<0)
{
printf("o modulo do %d e %d*-1\n" , num num );

}


system("pause");
return 0;
}


como vcs pode ver ainda esta imcompleto. a parte que eu erro que eu to tentando que ele ja imprima ja o valor absoluto. E necessario criar outra variavel???


  


2. Re: Modulo

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/07/2012 - 06:10h

Tem uma expressão simples que usa o "operador ternário: ?:

m = (condição)?valor_1:valor_2


Se "condição" for verdadeira, retorna valor_1; se for falsa, retorna valor_2.

Por exemplo, x é o número a ser testado e m receberá o valor de módulo:

m = x>0?x:-x


Se x for maior que zero, retorna ele mesmo, senão retorna ele mesmo com sinal trocado.

Se fosse no caso teste de sinal:

m = x==0?0:(x>0?1:-1)


Se for igual a zero, é sem sinal e retorna zero, senão retorna outra coisa.

Outra coisa agora é: se for positivo retorna 1; se negativo retorna -1.

Também pode ser usado a tal macrossubstituição com o "#define":

#define modulo(x) ((x)>0?(x):-(x))


Os parentesis devem ser respeitados porque neste tipo de substituição o compilador pode criar imprevistos, já que se trata de uma mera substituição.


3. Re: Modulo

Matias
matiasalexsandro

(usa Fedora)

Enviado em 02/07/2012 - 15:07h

mas tem outra questão:
eu não somente quero que ele retorne um valor mais imprima esse valor. Consigo ver o q vc me disse mas nao colocar mais funcao dentro de uma determinada condição


4. Re: Modulo

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/07/2012 - 21:35h

Fica:

(...)
printf("Modulo de %d eh igual a %d.\n",x,x>0?x:-x);
(...)


ou

(...)
#define modulo(X1) ((X1)>0?(X1):-(X1)) //sem ponto e virgula
(...)
printf("Modulo de %d eh igual a %d.\n",x,modulo(x));
(...)








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts