Jump to content
Ruka284

Programa multiplo

Recommended Posts

Ruka284

Este programa que fiz e para saber se um numero e múltiplo do outro.

#include<stdio.h>

int main()
{
   int num1,num2;
   int x,y;
   printf("\n   Programa Multiplo  \n");
   printf("introduzir 1 numero   \n");
   scanf("%d",&num1);
   printf("introduzir 2 numero   \n");
   scanf("%d",&num2);

   x=(num1%num2);
   y=(num2%num1);
   if (x == 0){
       printf("num1 e multiplo de num2");
   }
   else{
       printf("nao e multiplo");
   }
   getchar ();
   return 0;
}

Edited by thoga31
Formatação corrigida (código + texto)

Share this post


Link to post
Share on other sites
thoga31

Para que é esta linha...

y=(num2%num1);

...se não utilizas o seu resultado para nada?


Knowledge is free!

Share this post


Link to post
Share on other sites
pmg

Para que é o y?

Em vez de imprimires que "num1" é (ou não é) multiplo de "num2" sugiro que escrevas os números propriamente ditos, por exemplo: "16 e multiplo de 2"


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
HappyHippyHippo

código sem sentido :

- para que serve o y ?

erros ao virar da esquina :

- o que acontece se meter 0 no segundo número ?

a um passo de erro:

- o que acontece se escrever: "abc" e "def" como dados de entrada ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruka284

Obrigado pelos vossos comentarios

y e x são variáveis que dei para a formula do resto da divisão

se meter o 0 no segundo numero dá erro.

se meter letras diz logo que não é multiplo.

Share this post


Link to post
Share on other sites
HappyHippyHippo

y e x são variáveis que dei para a formula do resto da divisão

mas o y não serve para nada

se meter o 0 no segundo numero dá erro.

pois dá, mas devias te prevenir para esse tipo de situações

se meter letras diz logo que não é multiplo.

normalmente sim, mas pode ser que não. isto porque

- nunca inicializaste as variáveis num1 e num2

- uma leitura inválida no scanf não altera os valores das variáveis dadas

logo não podes saber o que vais ser calculado exactamente

mais um caso :

o que aparece se escreveres:

introduzir 1 numero
24 4
introduzir 2 numero
5

é de lembrar que 24 não é multiplo de 5


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruka284

mas o y não serve para nada

o que aconselhas neste caso ??

pois dá, mas devias te prevenir para esse tipo de situações

devia declarar ??

normalmente sim, mas pode ser que não. isto porque

- nunca inicializaste as variáveis num1 e num2

- uma leitura inválida no scanf não altera os valores das variáveis dadas

não percebi nesta nota, desculpa

logo não podes saber o que vais ser calculado exactamente

mais um caso :

o que aparece se escreveres:

introduzir 1 numero
24 4
introduzir 2 numero
5

é de lembrar que 24 não é multiplo de 5

diz que é multiplo, algo esta errado, obrigado pela observação.

neste caso que devo de fazer ??

Share this post


Link to post
Share on other sites
HappyHippyHippo
#define CLEAR_INPUT while (getchar != '\n')

// depois de todos os scanf's
scanf("%d", &var);
CLEAR_INPUT;

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Flinger

#define CLEAR_INPUT while (getchar != '\n')

É uma macro. Basicamente, o compilador vai substituir cada ocorrência da palavra CLEAR_INPUT pelo código declarado.

Share this post


Link to post
Share on other sites
Ruka284


#include<stdio.h>


int main()
{
int num1,num2;

printf("\n   Programa Multiplo  \n");
printf("introduzir 1 numero   \n");
scanf("%d",&num1);
printf("introduzir 2 numero   \n");
scanf("%d",&num2);

if ( num1 % num2 == 0){
	printf("num1 e multiplo de num2");
}
else{
	printf("nao e multiplo");
}
if ( num2 % num1 == 0){
	printf("num2 e multiplo de num1");
  }
  else{
	printf("nao e multiplo");
getchar ();
return 0;
}

já fiz umas alterações, qual vossa opinião ?

Edited by Ruka284

Share this post


Link to post
Share on other sites
Ruka284

qual o resultado de 7 e 3 ?

Diz que não e multiplo.

Como fazias este programa para ver a diferença da sintaxe.

Share this post


Link to post
Share on other sites
thoga31

Como fazias este programa para ver a diferença da sintaxe.

Primeiro que nada, em vez do output ser "num1 é múltiplo de num2", substitui "num1" e "num2" pelos seus valores.

De seguida, melhora a indentação.

Depois, não uses getchar.

Por último, podes aprender a verificar o input para saber se é válido ou não.

Em suma: começa a aplicar os conselhos que te dão. Não estou mais do que a repetir aquilo que já foi dito vezes sem conta.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Dexter's Lab

Primeiro que nada, em vez do output ser "num1 é múltiplo de num2", substitui "num1" e "num2" pelos seus valores.

De seguida, melhora a indentação.

Depois, não uses getchar.

Por último, podes aprender a verificar o input para saber se é válido ou não.

Em suma: começa a aplicar os conselhos que te dão. Não estou mais do que a repetir aquilo que já foi dito vezes sem conta.

Thoga, porque não usar o getchar? (qual deverei usar?)

Share this post


Link to post
Share on other sites
thoga31

Thoga, porque não usar o getchar? (qual deverei usar?)

Já não me lembro se é o getchar, mas há uma função desta família muito utilizada e que não é recomendada.


Knowledge is free!

Share this post


Link to post
Share on other sites
pmg

getchar() vs getch() vs outra solução

Primeiro: a função getch() não é definida pelo Standard. Usar essa função é limitar o programa desnecessariamente a ambientes onde a funcao existe.

Segundo: para evitar que o programa termine e a janela onde ele está a correr feche sem dar tempo de ver o resultado, o mais correcto é alterar o funcionamento da janela (em vez do funcionamento do programa). Usar o getchar() (ou o getch()) para este efeito é deturpar o programa (por exemplo, um programa para "imprimir numeros de fibonacci" deturpa-se para um programa para "imprimir numeros de fibonacci e esperar por enter").


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Ruka284

Primeiro que nada, em vez do output ser "num1 é múltiplo de num2", substitui "num1" e "num2" pelos seus valores.

Na minha opinião o num1 e num 2 deve de estar porque serve para qualquer numero ao contrario se meter valores.

De seguida, melhora a indentação.

Depois, não uses getchar.

O getchar vou continuar a introduzir para ver o final do programa

Por último, podes aprender a verificar o input para saber se é válido ou não.

Aqui neste ponto, eu acho que não estou validar corretamente

Em suma: começa a aplicar os conselhos que te dão. Não estou mais do que a repetir aquilo que já foi dito vezes sem conta.

Eu estou aplicar os conselhos que me dão, podes dizer qual os conselhos que não estou aplicar s.f.f.

Share this post


Link to post
Share on other sites
thoga31

Na minha opinião o num1 e num 2 deve de estar porque serve para qualquer numero ao contrario se meter valores.

Oh moço, "num1" e "num2" não se aplica a nada... O que eu estou a dizer é que deves substituir "num1" e "num2" pelos valores das variáveis. Então como fazes output de resultados??

Isto não te diz nada?

printf("%d e multiplo de %d", num1, num2);

O getchar vou continuar a introduzir para ver o final do programa

A história do getchar já rasurei, e o @pmg já deu uma explicação quanto a isso. Eu sei para que é que estavas a usar o getchar...

Aqui neste ponto, eu acho que não estou validar corretamente

De facto não estás a validar correctamente. Para já, enquanto iniciante, o programa está aceitável. Mas aconselho-te a começares a procurar por informações acerca da validação de inputs em C.

Eu estou aplicar os conselhos que me dão, podes dizer qual os conselhos que não estou aplicar s.f.f.

Os conselhos que não estás a aplicar foram aqueles que te dedicaste a refutar nesse post.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Ruka284

Oh moço, "num1" e "num2" não se aplica a nada... O que eu estou a dizer é que deves substituir "num1" e "num2" pelos valores das variáveis. Então como fazes output de resultados??

Isto não te diz nada?

printf("%d e multiplo de %d", num1, num2);

Sim, isto diz, obrigado

A história do getchar já rasurei, e o @pmg já deu uma explicação quanto a isso. Eu sei para que é que estavas a usar o getchar...

De facto não estás a validar correctamente. Para já, enquanto iniciante, o programa está aceitável. Mas aconselho-te a começares a procurar por informações acerca da validação de inputs em C.

O que aconselhas para validações ?

Os conselhos que não estás a aplicar foram aqueles que te dedicaste a refutar nesse post.

#include<stdio.h>

int main()
{
    int num1,num2,multiplo;

    printf("\n   Programa Multiplo  \n");
    printf("introduzir 1 numero   \n");
    scanf("%d",&num1);
    printf("introduzir 2 numero   \n");
    scanf("%d",&num2);

    if ( num1 % num2 == 0){
    printf("%d e multiplo de %d",num1,num2);
    }
    else{
    printf("nao e multiplo");
    }
    if ( num2 % num1 == 0){
		    printf("%d e multiplo de %d",num2,num1);
    }
    else{
   printf("nao e multiplo");
 }		  
    getchar ();
    return 0;
}

Share this post


Link to post
Share on other sites
HappyHippyHippo

imagina que corres o programa e ele te responde duas vezes a mesma coisa : o que irás pensar ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Ruka284

Já tinha reparado, dá-me duas resposta ao mesmo tempo e não fica nada de jeito.

Qual aconselhas que devo retirar ??

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


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