E' bello sapere che dopo tutte le spiegazioni che ti ho dato non hai appreso neanche una virgola. Ma dove programmi su Blocco Note? Il tuo compilatore non ti dice quali sono li errori che hai commesso nel codice. Tempo fà abbiamo parlato di passaggio per riferimento, e dopo una lunga spiegazione hai esclamato che hai capito. Buttare righe a caso su un editor non si chiama programmare e sono esausto di spiegarti le stesse cose perennemente. Per l'ultima volta.
I tuoi errori sono:
salva_file accetta un vettore di int e una stringa
L'errore che vedo solo dalla definizione è che siccome stai lavorando in C++ e non in C sarebbe stato meglio dichiarare la funzione in questo modo:
void salva_file(const int[] & vettore, const std::string & nomeFile)
perche ho messo i const: perche nella tua funzione tu NON MODIFICHI i valori del vettore e il nome del file.
Dal main li stai passando due variabili: un nomefile e un array di int che NON SI SA DA DOVE ARRIVANO. Chi li ha creati, dove sono creati, dove sono definiti ecc.
dentro il for stai scrivendo la posizione numero 5 (v[4] significa v[0] + 4 che NON è una posizione valida) visto che stai usando una variabile i per attraversare tutto il vettore dovresti usare questa variabile x mettere i valori dentro lo stream, quindi codice corretto:
output << v[i];
Questa comporta che "i" non raggiunga mai il numero 4 (da notare l'espressione di controllo i < 4) e che vengano scritti i valori di : v[0],v[1],v[2],v[3].
void scrivi_file(char nomefile,int v[4]={'a','b','c','d'})
qui stai passando un char chiamato nomefile e non una stringa in C e un non so cosa (un vettore costante forse)
anche quì per la stessa ragione di prima sarebbe stato meglio definire la funzione così
void scrivi_file(int v[] & vettore,std::string nomeFile)
dal main li stai passando le stesse variabili create nella tua mente forse ma non nel codice.
fstream è un file di INPUT quindi dal file tu prendi dati e li metti nel vettore. Stessa situazione di prima ma a parti cappovolte. Codice giusto:
input >> v[i];
Questa comporta che ogni cella del vettore prenda i dati dal stream di input ad ogni incremento di i quindi v[0], v[1],v[2],v[3] e STOP perche l'espressione di controllo i < 4 non lascia prosseguire.
VOTO per questo esercizio: 2