Ir ao conteúdo

Posts recomendados

Postado

12.    Faça um programa que peça dois números inteiros e gere os números pares que estão no intervalo entre eles.
R.

 

Estou tentando imprimir os pares no intervalo, mas ele não imprime, e o intervalo está começando com o número que digite, como faço para ele pular para o numero seguinte?

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


int main(int argc, char** argv) {
    
    int num1,num2,i,par;
    
    printf(" Digite o 1 numero ");
    scanf("%d",&num1);
    printf(" Digite o 2 numero ");
    scanf("%d",&num2);

        for (i= num1;i<num2;i++){
        if((i%2)==0){
            par=par + 1;
}
            
        printf("%i, ",par);
    }
    
          
    return 0;
}

 

  • Curtir 1
  • Membro VIP
Postado

Olá @estudante.

 

Você precisa reformular a lógica do seu algoritmo.

 

Tente entender melhor o problema, por exemplo, se for informado 1 e 10... teria que aparecer 2, 4, 6 e 8 (supondo que o intervalo é aberto), correto?. Tente analisar e interpretar como funciona essa sequência...

 

Sugiro que tente entender como o seu código atual está funcionando e se o resultado que está apresentando corresponde com o que você entendeu ou não... ou seja, não me parece está ocorrendo algum erro de sintaxe, mas apenas na lógica... o programa está fazendo o que você pediu para ele fazer...

 

Reformule para o que você precisa. Vá tentando...

 

 

No aguardo.

 

 

  • Curtir 1
  • mês depois...
Postado

Boa noite, você precisa só retirar aquela parte do + não e necessária e só usar a lógica.

#include <stdio.h>

int main(){
    
    int n1, n2,n;
    printf("Digite um numero: ");
    scanf("%i",&n1);
    fflush(stdin);
    printf("Digite outro numero: ");
    scanf("%i",&n2);
    fflush(stdin);
    

    for(n1=1;n1<n2;n1++){
        if(n1%2==0){
        printf("%i \n",n1);
    
    }

    }
    

    return 0;    
}

 

  • Curtir 2
  • Membro VIP
Postado

Olá a todos.

 

Segue uma resposta para referência.

#include <stdlib.h>
#include <stdio.h>
/*
12. Faça um programa que peça dois números inteiros e gere os números pares que estão no intervalo entre eles.
*/
int main(int argc, char** argv) {
    //int num1, num2, i, par;    A VARIÁVEL PAR NÃO FOI NECESSÁRIA
    int num1, num2, i;
    
    printf(" Digite o 1 numero ");
    scanf("%d",&num1);
    printf(" Digite o 2 numero ");
    scanf("%d",&num2);
    //for (i=num1; i<num2; i++) { //NÃO ESTÁ INCLUINDO O NÚMERO FINAL NA CONTA
    for (i=num1; i<=num2; i++) {
        if ((i%2)==0) { 
            //par=par+1;    O PROGRAMA NÃO QUER A QUANTIDADE, MAS SIM OS NÚMEROS EM SI
            printf("%i, ",i);
        }
        //printf("%i, ",par); SE FOSSE A QUANTIDADE, DE QUALQUER FORMA ESSA LINHA DEVERIA FICAR DEPOIS DO FOR
    }
    return 0;
}

 

Qualquer dúvida é só perguntar.

 

No aguardo.

adicionado 6 minutos depois

ADENDO

 

Em 18/02/2018 às 15:41, estudante disse:

Estou tentando imprimir os pares no intervalo, mas ele não imprime, e o intervalo está começando com o número que digite, como faço para ele pular para o numero seguinte?

No caso, ele está imprimindo no lugar errado, ou seja, a cada loop está imprimindo um valor (se a faixa tem 10 números, vão ter 10 valores).

 

E como a variável par só é atualizada quando o i é par, vai ficar, basicamente, repetindo o valor duas vezes, ou seja, Vai ficar exibindo a "soma dos pares a cada loop, sendo que só é atualizado quando é par"... só a primeira e últimas posições que podem ficar sem duplicar (fica solitário quando insere um número ímpar).

adicionado 14 minutos depois

ADENDO 2

@Guilherme Sandmann, só alguns detalhes. Segue o código para verificação:

#include <stdio.h>

int main() {
    int n1, n2,n;
    printf("Digite um numero: ");
    scanf("%i",&n1);
    fflush(stdin);
    printf("Digite outro numero: ");
    scanf("%i",&n2);
    fflush(stdin);
    //for(n1=1;n1<n2;n1++) { //está indo de 1, em vez de n1. E o valor de n2 não está sendo considerado 
    for(n=n1; n<=n2;n++) {
        if(n%2==0) {
            printf("%i \n",n);
        }
    }
    return 0;
}

 

 

Caso não seja para incluir os números na conta, poderia ficar assim:

#include <stdio.h>

int main() {
    int n1, n2,n;
    printf("Digite um numero: ");
    scanf("%i",&n1);
    fflush(stdin);
    printf("Digite outro numero: ");
    scanf("%i",&n2);
    fflush(stdin);
    for(n=n1+1; n<n2;n++) { //<--- dessa forma, NÃO VAI INCLUIR os números informados
        if(n%2==0) {
            printf("%i \n",n);
        }
    }
    return 0;
}

 

  • 2 anos depois...
Postado

Seu programa não está bom...

 

Você não inicializou 'par'. Que acha que vai imprimir?

 

Em 18/02/2018 às 15:41, estudante disse:

12.    Faça um programa que peça dois números inteiros e gere os números pares que estão no intervalo entre eles.

 

Um pouco mais de formalidade não seria mal, já que é um enunciado de escola: poderia dizer claramente se os tais dois números inteiros fazem parte do intervalo ou não

 

Vamos imaginar que sim. Então entre 12 e 14 tem dois pares.

    
    printf(" Digite o 1 numero ");
    scanf("%d",&num1);
    printf(" Digite o 2 numero ");
    scanf("%d",&num2);

        for (i= num1;i<num2;i++)
        {
            if((i%2)==0) par=par + 1;
        };  // for

Pense que você vai rodar seu programa e testar com o primeiro número 12 e o segundo 14 e você tem o programa assim

Agora se tivesse escrito assim:

 

    
		num1 = 12;
		num2 = 14;

        for (i= num1;i<num2;i++)
        {
            if((i%2)==0) par=par + 1;
        };  // for 
                                 
		num1 = 1;
		num2 = 10;

        for (i= num1;i<num2;i++)
        {
            if((i%2)==0) par=par + 1;
        };  // for


Claro que o valor de 'par' é desconhecido...

 

Então você já teria feito dois testes sem perder tempo esperando e digitando números na console. Não use essas coisas de scanf() e printf() misturadas com seu programa desde o início. Só perde tempo. Qunado acha que demora para depois de arrumar seu loop inserir

    
    printf(" Digite o 1 numero ");
    scanf("%d",&num1);
    printf(" Digite o 2 numero ");
    scanf("%d",&num2);

Quatro linhas de comando e apagar as atribuições?

 

De volta ao programa. Veja o LOOP


        for (i= num1;i<num2;i++)
        {
            if((i%2)==0) par=par + 1;
        };  // for 
   

Um comando for tem 3 partes, todas opcionais. Nesse seu exemplo a última parte é 

        i = i + 1; // ou i++ ou ++i ou i+=1

afinal dá na mesma. mas i++ e a pior escolha.

 

E estamos procurando os pares... Se num1 for par não seria o caso de apenas somar 2?

 

Se for comparar de 1 a 2000 vai passar por todos os ímpares para ver se são pares e descobrir que não são ao invés de achar o primeiro par e a partir daí contar de dois em dois? Sério? Parece eficiente? Parece Lógico?
 

Exemplo
 

  • Num1 = 12, par. Então vamos ter 12, 14, 16, 18...
  • Num1 = 11, ímpar. Então vamos ter... 12, 14,16, 18...
  • Num2 = 20 par, então vamos ter  ... 18, 20
  • Num2 = 21 impar, então vamos ter ... 18, 20

Veja essas duas opções num programa que você pode rodar

#include "stdio.h"

int main()
{
    int i = 0;

    printf("\n\nCaso 1: ");
    int num1 = 11;
    int num2 = 21;
    for (i = num1; i <= num2; i = i + 1)
    {
        if ((i % 2) == 0) printf("%d ", i);
    };

    // ou 

    printf("\n\nCaso 2: ");
    int n1 = num1;
    int n2 = num2;
    if (num1 % 2 != 0) n1 = n1 + 1; // num1 impar
    if (num2 % 2 != 0) n2 = n2 - 1; // num2 impar
    for (i = n1; i <= n2; i+=2) printf("%d ", i);
};  // for 

O resultado é o mesmo, mas no primeiro caso metade das comparações é desnecessária.

No segundo caso você sempre faz apenas 2 para corrigir os intervalos.

 

2 horas atrás, Matheus Freitas disse:

@Guilherme Sandmann Mano, você sabe fazer com números ímpares,pfv! 

Leia dois números, em seguida imprima todos os números impares entre esses dois 

números. 

 

Sério? Para mostrar os ímpares ache o primeiro ímpar e imprima de 2 em dois... Tipo a mesma coisa.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!