Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida sobre vetores


Leliabh

Pergunta

Estou fazendo um exercicio e me deparei com uma duvida, o exercio pede para que leia do teclado um vetor de 10 numeros inteiros e em seguida copie eses numeros para um vetor de mesmo tamanho, alterando o sinal dos numeros que estiverem em posição pares. Depois mostrar os valores do vetor resultante na tela.

Eu fiz o algoritmo, porem eu consegui alterar o valor do numeros inteiros que são par e não da posição , não estou conseguindo chegar numa logica para colocar o negativo na posição . Segue codigo fonte

#include <iostream>
using namespace std;
main()
{
int v1[10],v2[10],i;
i==0;
for(i=0;i<10;i++)
{
cout<<"Digite um valor inteiro:";
cin>>v1[i];

if(v1[i]%2==0)
{
v2[i]=v1[i]*-1;
}
else
{
v2[i]=v1[i];
}
i=i+1;
}
i=0;
for(i=0;i<10;i++)
{
cout<<endl<<v2[i];
i=i+1;
}


system("PAUSE>null");
}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom, duas coisas. Primeiro:

Para fazer a troca usando a posição, você tem fazer a comparação com o "i", que é o índice do vetor e não com o vetor. Da seguinte forma:

if ( i % 2 == 0)
{
v2[i] = v1[i] * (-1)
}
Segundo: Quanto ao seu código fiz algumas modificações para que funcionasse corretamente, explicarei elas com comentários:
#include <iostream>
using namespace std;
int main() // main é normalmente usada como int main. Se você usa somente main() está errado, pois você não está dando um tipo para a função.
{
int v1[10],v2[10],i;
//aqui tinha o seguinte código: i == 0, que era desnecessário e errado, uma vez que para inicializar variáveis usa-se somente um = e não dois e também porque você já
// inicializa ela no loop.
for(i=0;i<10;i++)
{
cout<<"Digite um valor inteiro:";
cin>>v1[i];

if(i%2==0)
{
v2[i]=v1[i]*(-1);
}
else
{
v2[i]=v1[i];
}
// nessa linha havia o seguinte código: i= i+1, o que está errado, pois você já incrementa o i em 1 cada vez que roda o loop. Então, com esse código, o loop so rodaria 5 //vezes.
}
for(i=0;i<10;i++)
{
cout<<endl<<v2[i];
// nessa linha havia o seguinte código: i= i+1, o que está errado, pois você já incrementa o i em 1 cada vez que roda o loop. Então, com esse código, o loop so rodaria 5 //vezes.
}

cin.get(); // tirei o system("pause") pois é uma função dependente do Windows e troquei ela por cin.get(), uma função nativa do C++.
return 0; // como main é uma função int (integer) tem que retornar algum valor.
}

Att., Pedro.

OBS.: Não se esqueça de usar as codetags. ("code" seu código "/code") (substitua as aspas por colchetes)

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

  • 0

O programa funciona corretamente nos dois casos, o que acontece é o seguinte:

em um vetor, o primeiro elemento é o vetor[0] e não o vetor[1] por isso quando rodamos, por exemplo:

0,1,2,3,4,5,6,7,8,9

ele altera o valor de 0, 2, 4, 6, 8.

Entendeu?

Qualquer dúvida é só perguntar, :D

Att.,

Pedro

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...