Ir ao conteúdo

C++ Manipulação de Vetores em C++


Ir à solução Resolvido por Ansi C,

Posts recomendados

Postado

    Amigos, seguinte, estou com um dúvida referente a vetores. O exercício solicita que seja feito a soma e apresente quantidade de valores pares, até esse ponto, tranquilo. Após ele pede a quantidade de valores ímpares, que não tem problema algum. Mas ao final, é solicitado para imprimir quais são esses valores ímpares que foram digitados.

    Como posso fazer essa busca dentre os vetores para imprimir tais valores?

    Segue o código:

 

#include <iostream>
using namespace std;

int main() {

    int vetor[6];
    int x;
    int pares, impares, imparesn ,soma;

    pares = 0;
    impares = 0;
    soma = 0;

    for(x = 0; x < sizeof(vetor) /4; x++) {
      cout << "Digite o valor do vetor " << x << " : ";
      cin >> vetor[x];
      cout << "\n";

      if(vetor[x] % 2 == 0) {
        pares++;
        soma = soma + vetor[x];
      }else {
        impares++;
        imparesn = vetor[x];
      }
    }
    cout << "A quantidade de vetores pares eh = " << pares << "\n";
    cout << "A soma dos vetores pares eh = " << soma << "\n";
    cout << "A quantidade de vetores impares eh = " << impares << "\n";
    cout << "O(s) numero(s) impar(es) eh = " << imparesn << "\n";

    return 0;
}

 

* PS: Utilizei um variável "imparesn" para tentar, porém como imaginava, está imprimindo apenas o último valor ímpar digitado...

  • Curtir 1
Postado

eu fiz um codigo em c#, vai dar na mesma. entao se voce entender , converta ai:

 

 static void Main(string[] args)
        {
            int[] num = new int[11];
            int x; //contado do for.


            int soma=0, maior=0, menor=0, par=0, impar=0;
            double media = 0;


            for (x = 1; x < 11; x++)
            {
                Console.Write("Digite o {0} número: ", x);               
                num[x] = int.Parse(Console.ReadLine());
                soma += num[x];
                media = soma / 10;
             
                if (num[x] % 2 == 0)
                {
                    par++;
                }
                    else
                    {
                        impar++;
                    }
                if (num[x] > maior)
                {
                    maior = num[x];
                }
                if (x == 1)
                {
                    menor = num[x];
                }
                if (num[x] < menor)
                {
                    menor = num[x];
                }
            }


            Console.WriteLine("Maior {0}, Menor {1}, Soma {2}, Media {3}, Par:{4}, Impar:{5}", maior, menor, soma, media, par, impar);


            for ( x = 0; x < 11; x++)
            {
                if (num[x] % 2 == 0)
                {
                    Console.WriteLine(num[x] + " é PAR");
                }
                else
                {
                    Console.WriteLine(num[x] + " é IMPAR");
                }

            }  
            Console.ReadKey();
        }
    }
}

 

o que esta em negrito é o que voce procura, no teu codigo voce chama a variavel do vetor, mas voce nao identifica a posição dela.


no teu caso seria :

 

cout << "O(s) numero(s) impar(es) eh = " << vetor[x] << "\n";

  • Curtir 1
  • Solução
Postado

Olá, 

Existem incontatáveis maneiras de se fazer isso; eu por exemplo organizaria as entradas no vetor, ou seja, se o valor digitado for par então a índice par será incrementado e gravado no início do vetor, se o valor é ímpar, o índice impar é incrementado e o valor gravado no fim do vetor. 

 

A lógica é muito básica, ambos índices incrementam, porém apenas o índice que vem da "rabo" do vetor, ou seja, do seu tamanho subtrai, obviamente.

 

/* Exemplo básico do que estou falando, só para ilustração */

enum Constantes {TAM= 10,};
/*: Constante do programa */

int	valor_int= 0;
/*: alocar uma variável do tipo inteiro */

int	pares= 0;
/*: índece para pares */

int	impares= 0;
/*: índice para ímpares */

int	valores_int[TAM]= {0};
/*: alocar base para os valores */

scanf( "%i", (& valor_int) );
/*: Da entrada padrão pegar um dado inteiro */

if( valor_int & 1 )
{	/*: Se ímpar então salvar e incrementar os ímpares */
	valores_int[(TAM - 1) - impares++]= valor_int;
} else
{	/*: Se não então salvar e incrementar os pares */
	valores_int[pares++]= valor_int;
}

Daqui, eu acredito que você já ver as quantidades de pares e ímpares, saberá também que todos os valores ímpares estão no fim do vetor, a partir da última célula, bem como todos os valores pares estão no começo do vetor, a partir da primeira célula. 

 

Valeu!

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!