[C++] esercizio sottoprogramma vettori

deangelis
ciao a tutti, ho un problema con il seguente programma, penso che sia dovuto allo scambio.


/* 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
vict85
Il test sulla positività è sbagliato.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.