[C++] esercizio sottoprogramma vettori
ciao a tutti, ho un problema con il seguente programma, penso che sia dovuto allo scambio.
grazie in anticipo a tutti.
/* inserire da tastiera un riempimento e un vettore v1 e si crei una funzione
che copi in un v2 la posizione degli elementi positivi e un numero " nelem "
che indici il numero dei negativi o nulli. Si stampi infine v2 e nelem, dando
un messaggio nel caso in numeri sia tutti positivi o negativi. */
#include <iostream>
#include <stdlib.h>
using namespace std;
#define dim 100
void leggi(int v1[], int &);
void creazione_nvet(int[], int &, int[], int &, int &);
void stampa(int, int[], int, int);
int main() {
int v1[dim], N, v2[dim], M, nelem;
leggi(v1, N);
creazione_nvet(v1, N, v2, M, nelem);
stampa(N, v2, M, nelem);
system("PAUSE");
return 0;
}
void leggi(int v1[], int &N) {
cout << "INSERIRE IL RIEMPIMENTO" << endl;
cout << "RIEMPIMENTO =";
cin >> N;
cout << "INSERIRE IL VETTORE V1" << endl;
for (int i = 0; i < N; i++) {
cout << "ELEMENTO V1[=" << i << "]=";
cin >> v1[i];
}
}
void creazione_nvet(int v1[], int &N, int v2[], int &M, int &nelem) {
nelem = 0;
int j = 0;
for (int i = 0; i < N; i++) {
if (v1[i] % 2 == 0) {
v2[j] = i;
j++;
}
}
for (int i = 0; i < N; i++) {
if (v1[i] <= 0) {
nelem = nelem + 1;
}
M = j + 1;
}
void stampa(int N, int v2[], int M, int nelem) {
for (j = 0; j < M; j++) {
cout << v2[j];
}
if (nelem == N) {
cout << "gli elementi sono tutti negativi";
}
if (nelem == 0) {
cout << "gli elementi sono tutti positivi";
}
}
}
grazie in anticipo a tutti.
Risposte
Il test sulla positività è sbagliato.