Ir ao conteúdo
  • Cadastre-se

C++ Código para mostrar números pares de 1 até 100


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Bom dia, programadores de plantão. Venho aqui com a seguinte dúvida. 

 

Eu tenho que fazer um aplicativo (onde o usuário não entre com algum valor) que mostre todos os números pares de 1 até 100, usando o comando For. Infelizmente, com a programação que fiz está dando um loop infinito e não sei onde errei.

Obrigado pela atenção.

 

Segue a programação

#include <stdio.h>

main () {
    int i,num;

    for (int i= 1;i<= 100,i++;)
    {
       num= i%2;
    if (num%2 ==0)     printf ("Numero par: %d",i);
      }
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Olá @Vinicius Zancanari.

 

Sintaxe do for:

//for (int i= 1;i<= 100,i++;)
for (i=1; i<=100; i++) {

 

adicionado 6 minutos depois

ADENDO:

Os números pares são em sequência... não precisa ficar verificando. Ex.:

#include <stdio.h>
main () {
    for (int i=1; i<=100/2; i++) {
        printf ("Numero par: %d\n",i*2);
    }
}

ou

#include <stdio.h>
main () {
    for (int i=2; i<=100; i+=2) {
        printf ("Numero par: %d\n",i);
    }
}    

Etc

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Era esse erro aqui q tava dando e continuava infinitamente até eu fechar.

Porém o Simon Vegas conseguiu consertar.

Valeu pela atenção <3

Erro.png

adicionado 0 minutos depois
 

Olá @Vinicius Zancanari.

 

Sintaxe do for:


//for (int i= 1;i<= 100,i++;)
for (i=1; i<=100; i++) {

 

Deu certinho,muito obrigado

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Vinicius Zancanari.

 

Que bom..

 

Vou aproveitar para complementar:

Em relação ao desenvolvimento dos algoritmos, e ao mesmo tempo continuando no mundo da paridade, creio que a forma que você idealizou se aproximou bem do que se deseja, ou seja, efetuando uma verificação individual... analisando cada número e vendo se é par ou não.

 

Seria mais ou menos isso:

#include <stdio.h>

main () {
    int i, num;
    for (i=1; i<=100; i++) {//aqui já com a "correção" da sintaxe do for para o seu contexto
        num= i%2;
        if (num%2 ==0)
            printf ("Numero par: %d\n",i); //aqui apenas com a sugestão para separar as linhas
    }
}

 

Então, a ideia da proposta do exercício não é ter simplesmente uma lista em si, mas sim que seja efetuado operações voltadas ao contexto para gerar a lista.  Se fosse apenas para listar (não levando a citação do uso do for), poderia ser algo assim:

#include <stdio.h>
main () {
   printf (" 2,  4,  6,  8, 10, 12, 14, 16, 18, 20, "
           "22, 24, 26, 28, 30, 32, 34, 36, 38, 40, "
           "42, 44, 46, 48, 50, 52, 54, 56, 58, 60, "
           "62, 64, 66, 68, 70, 72, 74, 76, 78, 80, "
           "82, 84, 86, 88, 90, 92, 94, 96, 98, 100");
}

Pura e simples! Qual a graça?

 

 

Em relação aos outros exemplos que dei no "adendo", lá seriam também formas de "burlar" a metodologia... ou seja, estaria focado mais no resultado,  e menos no processo, mas tecnicamente também estariam certos (afinal tá usando for e imprime os números corretos).

 

Para exemplificar, tentei destrinchar o que conseguir absorver do tema... uma análise mais profunda (apenas para efeito didático):

 

 

Como interpretei o problema da seguinte forma:

 

Para todo e qualquer resolução de problema, é necessário ANTES entender o problema. Pelo que já conheço de paridade, e pela relativa simplicidade, é notável que eles seguem uma simples sequência... variando de 2 em 2, ou seja, seguem uma PA.

 

BASE DO PROBLEMA:

Mostrar todos os números pares de 1 até 100

 

BASE DOS REQUISITOS

Saber o que é um número par e como identifica-los/gerá-los

Usar estrutura de repetição for;

Tratar da faixa de números de 1 a 100;

 

***

 

Imaginei que poderia achar o primeiro número da sequência, e após isso, imprimir todos os números, "pulando" de 2 em 2, contidos na faixa...

 

Ficaria algo assim:

- encontrar o primeiro par da lista;

- ir imprimindo e incrementando de 2 em 2 enquanto não for o último da lista.

 

Traduzindo para C++:

#include <stdio.h>

//limites da lista
#define listaINICIO 1  
#define listaFIM    100
#define razao       2   //os números pares possuem uma razão 2 entre eles

main () {   
    int primeiroPar; //auxiliar para marcar o primeiro par da lista
        
    //LOCALIZA O PRIMEIRO PAR DA LISTA
    int num = listaINICIO; //número contido na lista que será analisado. Inicializa com o primeiro número da lista
    int ENCONTROU = 0; //iniciala a flag que indica se já foi encontrado ou não (0=false 1=true)
    while ((num<=listaFIM) && (not ENCONTROU)) { //enquanto não chegar ao fim da lista E não ter encontrada um número
        if (num % 2 == 0) { //se o resto da divisão por 2 for 0, é porque é par
            primeiroPar=num; //copia o valor do primeiro número par
            ENCONTROU=1; //marca a flag como encontrada
        }
        num++; //vai incrementando de um em um
    }
    //FIM LOCALIZA O PRIMEIRO PAR DA LISTA
    
    
    if (ENCONTROU) { //verifica se existem números pares na lista
        //GERA A LISTA DOS PARES CONTIDOS NA LISTA
        printf ("Numero pares entre %d e %d:\n %2d",listaINICIO,listaFIM,primeiroPar);
        //como todos os próximos pares seguem em uma PA (progressão aritimética), basta incrementar de 2 em 2 e exibir
        for (int i=primeiroPar+razao; i<=listaFIM; i+=razao) {
            printf (", %d",i);
        }
        //FIM GERA A LISTA DOS PARES CONTIDOS NA LISTA
    } else
        printf ("Não existem pares entre %d e %d",listaINICIO,listaFIM);
}

 

Tente reparar que tentei seguir a base...: achar o primeiro e gerar o restante apenas pulando de 2 em 2 até que chegue ao limite.

 

Outros pontos já foram implementados no processo, como:

- exibir os números um ao lado do outro;

- exibir os número com duas casas de espaço, para ficar um pouco mais alinhado;

- utilizar constantes para facilitar a generalização da faixa. (poder usar outras faixas com mais facilidade)

etc

 

 

Att

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Estou começando a aprender C++ agora e você acabou de me dar uma aula.

Muito obrigado por essa "aula"e as outras respostas. Você é um Deus, continue assim

Em 07/03/2018 às 11:45, Simon Viegas disse:

Olá @Vinicius Zancanari.

 

Que bom..

 

Vou aproveitar para complementar:

Em relação ao desenvolvimento dos algoritmos, e ao mesmo tempo continuando no mundo da paridade, creio que a forma que você idealizou se aproximou bem do que se deseja, ou seja, efetuando uma verificação individual... analisando cada número e vendo se é par ou não.

 

Seria mais ou menos isso:


#include <stdio.h>

main () {
    int i, num;
    for (i=1; i<=100; i++) {//aqui já com a "correção" da sintaxe do for para o seu contexto
        num= i%2;
        if (num%2 ==0)
            printf ("Numero par: %d\n",i); //aqui apenas com a sugestão para separar as linhas
    }
}

 

Então, a ideia da proposta do exercício não é ter simplesmente uma lista em si, mas sim que seja efetuado operações voltadas ao contexto para gerar a lista.  Se fosse apenas para listar (não levando a citação do uso do for), poderia ser algo assim:


#include <stdio.h>
main () {
   printf (" 2,  4,  6,  8, 10, 12, 14, 16, 18, 20, "
           "22, 24, 26, 28, 30, 32, 34, 36, 38, 40, "
           "42, 44, 46, 48, 50, 52, 54, 56, 58, 60, "
           "62, 64, 66, 68, 70, 72, 74, 76, 78, 80, "
           "82, 84, 86, 88, 90, 92, 94, 96, 98, 100");
}

Pura e simples! Qual a graça?

 

 

Em relação aos outros exemplos que dei no "adendo", lá seriam também formas de "burlar" a metodologia... ou seja, estaria focado mais no resultado,  e menos no processo, mas tecnicamente também estariam certos (afinal tá usando for e imprime os números corretos).

 

Para exemplificar, tentei destrinchar o que conseguir absorver do tema... uma análise mais profunda (apenas para efeito didático):

 

 

Como interpretei o problema da seguinte forma:

 

Para todo e qualquer resolução de problema, é necessário ANTES entender o problema. Pelo que já conheço de paridade, e pela relativa simplicidade, é notável que eles seguem uma simples sequência... variando de 2 em 2, ou seja, seguem uma PA.

 

BASE DO PROBLEMA:

Mostrar todos os números pares de 1 até 100

 

BASE DOS REQUISITOS

Saber o que é um número par e como identifica-los/gerá-los

Usar estrutura de repetição for;

Tratar da faixa de números de 1 a 100;

 

***

 

Imaginei que poderia achar o primeiro número da sequência, e após isso, imprimir todos os números, "pulando" de 2 em 2, contidos na faixa...

 

Ficaria algo assim:

- encontrar o primeiro par da lista;

- ir imprimindo e incrementando de 2 em 2 enquanto não for o último da lista.

 

Traduzindo para C++:


#include <stdio.h>

//limites da lista
#define listaINICIO 1  
#define listaFIM    100
#define razao       2   //os números pares possuem uma razão 2 entre eles

main () {   
    int primeiroPar; //auxiliar para marcar o primeiro par da lista
        
    //LOCALIZA O PRIMEIRO PAR DA LISTA
    int num = listaINICIO; //número contido na lista que será analisado. Inicializa com o primeiro número da lista
    int ENCONTROU = 0; //iniciala a flag que indica se já foi encontrado ou não (0=false 1=true)
    while ((num<=listaFIM) && (not ENCONTROU)) { //enquanto não chegar ao fim da lista E não ter encontrada um número
        if (num % 2 == 0) { //se o resto da divisão por 2 for 0, é porque é par
            primeiroPar=num; //copia o valor do primeiro número par
            ENCONTROU=1; //marca a flag como encontrada
        }
        num++; //vai incrementando de um em um
    }
    //FIM LOCALIZA O PRIMEIRO PAR DA LISTA
    
    
    if (ENCONTROU) { //verifica se existem números pares na lista
        //GERA A LISTA DOS PARES CONTIDOS NA LISTA
        printf ("Numero pares entre %d e %d:\n %2d",listaINICIO,listaFIM,primeiroPar);
        //como todos os próximos pares seguem em uma PA (progressão aritimética), basta incrementar de 2 em 2 e exibir
        for (int i=primeiroPar+razao; i<=listaFIM; i+=razao) {
            printf (", %d",i);
        }
        //FIM GERA A LISTA DOS PARES CONTIDOS NA LISTA
    } else
        printf ("Não existem pares entre %d e %d",listaINICIO,listaFIM);
}

 

Tente reparar que tentei seguir a base...: achar o primeiro e gerar o restante apenas pulando de 2 em 2 até que chegue ao limite.

 

Outros pontos já foram implementados no processo, como:

- exibir os números um ao lado do outro;

- exibir os número com duas casas de espaço, para ficar um pouco mais alinhado;

- utilizar constantes para facilitar a generalização da faixa. (poder usar outras faixas com mais facilidade)

etc

 

 

Att

 

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

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