Jump to content
Fórum Script Brasil
  • 0

Duvida sobre vetores


Leliabh

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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)

Edited by PedroCunha
Link to comment
Share on other 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

Edited by PedroCunha
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...