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???