Scrittura elementi dispari

di il
3 risposte

Scrittura elementi dispari

Salve, devo svolgere un esercizio in cui devo leggere dei numeri da un file in input e scrivere in un file di output solo i numeri dispari. Il file di input ha 100 righe di cui il primo indica il numero degli elementi (nel codice lo indico con N), il resto sono gli elementi da analizzare.
Il problema è che comunque nel file di output mi stampa i valori pari con 0 oppure -41000434 (numero di esempio per farvi capire come li stampa.
Vi posto il codice: https://pastebin.com/hQ78Pvi
Spero possiate aiutarmi, grazie anticipatamente!

3 Risposte

  • Re: Scrittura elementi dispari

    Il codice postalo nel forum!

    Comunque

    1. Usi male la for perché i aumenta comunque anche se non trovi numeri dispari e quindi in alcuni elementi ci sono valori casuali

    2. NON c'è nessun bisogno di utilizzare il vettore. Leggi dal file in input, controlla se e è dispari e scrivi direttamente nel secondo file
  • Re: Scrittura elementi dispari

    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?
  • Re: Scrittura elementi dispari

    Ancora non hai letto il regolamento? Il codice va inserito nel forum tra tag code.

    Comunque non usare il vettore.. è semplice, leggi, vedi se e è dispari e scrivi, poi ripeti. Cosa c'è do difficile?
Devi accedere o registrarti per scrivere nel forum
3 risposte