PDA

Visualizza la versione completa : [C++]copiare elementi di un vettore su un altro vettore


Mephysto92
25-01-2012, 18:51
Ciao ragazzi, da poco sto studiando il C++ e mi servirebbe sapere un algoritmo che possa copiare ALCUNI elementi di un vettore su un altro vettore. Il testo vero e proprio dice di leggere da tastiera gli elementi del vettore1 e copiare nel vettore2 solo quelli minori di 0. Ho iniziato così

#include <cstdlib>
#include <iostream>

using namespace std;

int vettore1[5];
int vettore2[5];

cout<<"Inserisci gli elementi del vettore1: "<<"\n";
for(int i=0;i<5;i++)
cin>>vettore1[i];

//la parte di codice sottostante dovrebbe copiare i valori minori di zero nel vettore 2 ma non
// riesco a completarla

for(int i=0;i<5;i++)
if(vettore[i]<0)
?????????????????????? come devo continuare :dhò:

Grazie !

oregon
25-01-2012, 19:03
Devi usare un altro indice (j) di destinazione per il vettore2 che parte da 0 e incrementi quando scrivi nel vettore2.

Mephysto92
25-01-2012, 20:35
ho provato così ma proprio non mi riesce :

int j=0;
int vettore2[5];

for(int i=0;i<5;i++)
if(vettore[i]<0)
vettore[j]=vettore[i];
j++;

:confused:

ramy89
25-01-2012, 20:48
Originariamente inviato da Mephysto92
ho provato così ma proprio non mi riesce :

int j=0;
int vettore2[5];

for(int i=0;i<5;i++)
if(vettore[i]<0)
vettore[j]=vettore[i];
j++;

:confused:

Usa i tag code, devi prima prendere in input gli interi come hai fatto prima con cin.
Dopo fai un ciclo.
Nel ciclo che stai facendo non c'è la graffa che specifica di che blocco fa parte il codice.
Lo correggo:


for(int i=0;i<5;i++)
{
if(vettore[i]<0)
{
vettore[j]=vettore[i];
j++;
}
}

Mephysto92
26-01-2012, 00:04
Grazie mille siete stati gentilissimi !!!!

Avrei però un'altra domanda. :shy: Dato che quando inserisco da tastiera gli elementi minori di zero, questi potrebbero essere in numero inferiore rispetto all'ampiezza del vettore, quando faccio un ciclo "for" per visualizzare gli elementi che ci sono nel vettore, mi fa vedere ovviamente anche dei numeri casuali. Como posso evitare che ciò accada e fare in modo che l'ampiezza del vettore sia pari ai numeri negativi che inserisco ??

Scusate se sono un novellino incapace :mame:

ramy89
26-01-2012, 00:32
In pratica stai dicendo di prendere il valore assoluto preso in input?
Se non sbaglio in math.h c'è la funzione valore assoluto (abs) , ma puoi costruirtela te una funzione se ti va.

oregon
26-01-2012, 00:36
Originariamente inviato da Mephysto92
...quando faccio un ciclo "for" per visualizzare gli elementi che ci sono nel vettore, mi fa vedere ovviamente anche dei numeri casuali...



I numeri negativi inseriti li hai in (j-1) ... non capisco il problema ... quale codice hai scritto per visualizzare i numeri negativi ?

Mephysto92
26-01-2012, 12:50
cout<<"Gli elementi che appartengono al vettore vettore2 sono:"<<"\n";
for(int j=0;j<5;j++)
cout<<V2[j];

oregon
26-01-2012, 13:12
No .... ragiona ... non sono 5 ma quanti ne ha contato j-1 (se j>0) ...

Quindi



if(j>0)
for(int k=0; k<(j-1); k++)
cout<<V2[k];

Loading