Ir para o conteúdo
Ruka284

Programa multiplo

Mensagens Recomendadas

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;
}

Editado por thoga31
Formatação corrigida (código + texto)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
#define CLEAR_INPUT while (getchar != '\n')

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

Editado por HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ?

Editado por Ruka284

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.