Ir ao conteúdo
  • Cadastre-se
Padawan da Engenharia

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

Recommended Posts

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

manda um print do erro

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×