Olá, boa noite, tava precisando de ajuda em um algoritmo de exercício que não faço ideia de como fazer, já tentei com FOR mas não deu certo, eu preciso de receber dois numeros e mostrar os números pares entre eles, começei assim alguem me ajuda:
#include <stdio.h>
#include <stdlib.h>
#include <math.h> //Biblioteca que faz a potência
// inicio do programa principal
int main() {
// Declaraçao das variáveis
int a, b, conta;
printf("Digite o primeiro numero:");
scanf("%f",&a); //Recebendo numero 1
printf("Digite o segundo numero:");
scanf("%f",&b); //Recebendo numero 2
}
Vc começou bem e sua ideia de usar o FOR está correta.
Para saber se um número é par, utilizamos o operador de módulo %
. Ele nos retorna o resto de uma divisão.
No caso, temos que achar o módulo da divisão do número desejado por 2. Se o resultado for 0, é par; se for 1, é impar.
if (n % 2 == 0) {
puts("é par");
} else {
puts("é impar");
}
O código ficaria assim:
#include <stdio.h>
int main() {
int a, b;
printf("Digite o primeiro numero: ");
scanf("%d", &a);
printf("Digite o segundo numero: ");
scanf("%d", &b);
for (int i = a; i <= b; i++) {
if (i % 2 == 0) {
printf("%d\n", i);
}
}
}
No código acima, o resultado inclui os números a e b. Se não quiser incluir o a, tem que mudar o FOR pra ficar assim:
for (int i = a + 1; i <= b; i++)
E se não quiser incluir o b, basta alterar pra ficar assim:
for (int i = a; i < b; i++)
Como é um exercício, provavelmente “querem” que você faça um loop de a
a b
e fique testando se o número é par (como sugeriu o post do wldomiciano). Mas na verdade isso é meio desnecessário - se eu só quero números pares, para que fazer um for
de 1 em 1, sendo que metade dos números será ímpar? (ou seja, vou testar várias vezes, e eu já sei que em metade delas não será par)
Uma solução um pouco melhor é verificar somente se o primeiro é par. Se não for, eu somo 1, assim eu garanto que a sequência começa em um número par. E se eu sei que já estou começando em um número par, basta fazer o for
de 2 em 2:
#include <stdio.h>
int main() {
int a, b;
printf("Digite o primeiro numero:");
scanf("%d", &a);
printf("Digite o segundo numero:");
scanf("%d", &b);
// verifica se o primeiro número é ímpar
if (a % 2 != 0) {
// se a for ímpar, soma 1, aí ele passa a ser par
a++;
}
// a partir daqui eu tenho certeza que "a" é par, então posso fazer o for de 2 em 2
for (int i = a; i <= b; i += 2) {
printf("%d\n", i);
}
}
Vale lembrar que este código está em C, e não em C++. E também retirei os include
's desnecessários e a variável conta
, que não estava sendo usada para nada. E repare que para ler int
, usa-se %d
e não %f
- consulte a documentação para mais detalhes.
1 curtida