1
resposta

Estou fazendo um exercício que não é da plataforma do alura. Ainda assim eu poderia esar esse espaço para tirar dúvida?

#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;

int main() {
  int n, m, i, j, valor;
  vector<int> lista1;
  vector<int> lista2;
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    cin >> valor;
    lista1.push_back(valor);
  }

  while (j < m) {
    if (valor != 0) {
      lista2.push_back(lista1.pop_back());
      cout << valor << " ";
      j++;
    }

    if (valor == 0) {
      continue;
    }
  }
}

Então, basicamente eu queria tirar o último número que está na lista1 para a lista2. Se aqui não é o espaço para isso, entendo e poderei remover a pergunta.

1 resposta

Oii, Estudante! Tudo bem?

Fique à vontade para postar suas dúvidas! No entanto, como é um projeto fora da Alura, no qual não temos acesso ao contexto da aula, dos exercícios e tudo que o compõe, conseguimos apenas te passar orientações e sugestões com base no que você descrever.

No trecho do seu código, há um pequeno erro que pode estar causando algum bug. Há uma tentativa de usar o método pop_back() que não retorna o valor que está sendo removido. O método pop_back() apenas remove o último elemento, mas não o retorna. Como sugestão, é preciso primeiro acessar o último elemento com o método back(), adicionar esse valor à lista2 e então usar o pop_back() para removê-lo da lista1.

Outro ponto importante a se observar, você não inicializou a variável j. Isso pode causar um comportamento indefinido. Revise o seu código e tenha certeza de que tenha inicializado j antes do loop, como int j = 0;.

Como são sugestões, lembre-se de adaptar ele conforme o contexto do seu projeto. Espero que dê certo!

Continue interagindo aqui no fórum e bons estudos!