Ciao, grazie per avermi fatto notare l'errore del for.. Ho riscritto il codice usando una variabile in cui salvo l'indice dell'array e poi lo pongo come valore massimo da raggiungere nel secondo for, comunque non riesco a fare a meno del vettore :/.
Qui ti incollo il codice riscritto:
#include <iostream>
#include <fstream>
#define INPUT_FILE "input.txt"
#define OUTPUT_FILE "output.txt"
using namespace std;
int main() {
bool end = false;
int N;
int y;
fstream infile, outfile;
infile.open(INPUT_FILE, fstream::in);
outfile.open(OUTPUT_FILE, fstream::out);
if (!infile.is_open()) {
cerr << "Error opening file " << INPUT_FILE << endl;
return -1;
}
if(!outfile.is_open()){
cerr << "Error opening file " << OUTPUT_FILE << endl;
return -1;
}
while (!end) {
infile >> N;
if(infile.eof()){
cout << "End of input, exit! " << endl;
end=true;
}
else if(infile.fail()){
cerr << "Error reading N from file " << INPUT_FILE << endl;
end=true;
}
else {
int v[N];
int i;
int j=0;
int c=0;
for (i=0; i<N; i++) {
infile >> y;
if (y%2==1) {
v[j]=y;
j++;
c++;
}
else
infile.ignore();
}
for (j=0; j<c; j++) {
if (!(outfile << v[j] << " ")) {
cerr << "error writing number on file!" << endl;
end = true;
}
}
if (!(outfile << "\n")) {
cerr << "error writing on file!" << endl;
end = true;
}
}
}
infile.close();
outfile.close();
}
come faccio a scrivere direttamente nel file di output senza usare il vettore? cioè, posso utilizzare comunque quel ciclo for?