ok ora funzica.. avevo sbagliato quel fatto sulla i.

Guardate quest'altro che non riesco a far funzionare:

TRACCIA:
Prova 3
Siano assegnati in ingresso, da tastiera, un vettore di interi V, il suo riempimento n ed un intero k.
Si scriva un programma che elimini dal vettore V tutti gli elementi il cui valore è maggiore di k e calcoli il numero num di elementi eliminati. Si stampino quindi il vettore V modificato ed il valore num.
Il programma deve essere articolato in funzioni (ad es.: input, output, elimina).
Suggerimento: la funzione elimina riceve in ingresso n, V e k e restituisce come valore di ritorno num.
Esempi
INPUT: n = 7 V = 7 4 1 3 7 2 9 k = 4
OUTPUT: V = 4 1 3 2 num = 3

INPUT: n = 7 V = 7 4 1 3 7 2 9 k = 12
OUTPUT: V = 7 4 1 3 7 2 9 num = 0



MIO SVOLGIMENTO:

codice:
#include <stdlib.h>
#include <iostream>
using namespace std;
void input (int v[], int &n, int &k);
void elimina(int v[], int &n, int k, int &num);
void output(int v[], int &num, int &n); 


int main()
{
 int v[100];
 int n,k;
 int num=0;
 input(v,n,k);
 elimina(v,n,k,num);
 output(v,num,n);
 
 
 
 
 system("PAUSE");
 return 0;

}


void input (int v[], int &n, int &k)
{
     int i;
     cout<<"inserisci il numero di elementi costituenti il vettore\n\n";
     cin>>n;
     cout <<"inserisci gli elementi del vettore\n\n";
     for (i=0;i<n;i++)
         cin>>v[i];
     cout<<"\n\ninserisci ora un valore intero k";
     cin>>k;
}

void elimina(int v[], int &n, int k, int &num)
{
     int i=0;
     while(i<n)
     {
         if(v[i]>k)
           {v[i]=v[i+1];
            num++;
            }
            else
           i++;
           
     }
}

void output(int v[],int &num, int &n)
{
     cout<<"i valori del vettore modificato sono\n\n";
      for (int i=0;i<n;i++)
        cout <<v[i]<<"\t";
      cout <<" il numero di elementi elininati e\'"<<num<<"\n\n\n";
}
qualcuno può correggermelo mettendo in grassetto la parti errate che ha corretto?? Mi sa che sbaglio sul while, come va fatto???