[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.