Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Inserimento righe file txt in un array...

    Ho questo cod:
    #include <iostream>
    #include <fstream>
    #include <string>

    using namespace std;
    int main (int argc, char *argv[])
    {
    ifstream fin;
    fin.open("estrazioni2.txt");
    string s;
    while(!fin.eof())
    {
    fin >> s;
    cout << s;
    }
    cout << "Press ENTER to continue..." << endl;
    cin.get();
    return 0;
    }

    il file estrazioni è costituito da righe numeriche di questo tipo:

    58,22,47,49,69;
    18,77,33,62,19;
    68,65,41,28,67;
    76,55,48,85,71;
    70,2,20,85,75;
    82,81,16,52,77;

    Io avrei necessità di inserire riga per riga come singolo elemento array...

    per adesso il codice sopra postato mi legge tutto il file ma senza ritorno a capo e senza inserimento in array...

    per inserire in array per adesso avrei provato così...

    int array1[5000]; //dichiarazione dell'array con numero di elementi (righe) previste...
    int i; dichiarazione variabile contatore...

    for (i=0; i<5000; i++) {

    array1 << s[i];


    }

    ma non funzia e comunque sia non riesco a dirgli... che ad ogni punto e virgola deve inserire un elemento diverso dell'array...


    Grazie a chi non è ancora in vacanza... e vuol darmi una mano


  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Una versione col vector.
    codice:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    
    using namespace std;
    int main (int argc, char *argv[]) {
    
    vector<string> vec;
    ifstream fin("estrazioni2.txt");
    if (fin) {
       string s;
       while(fin) // cattura tutti gli errori.
       {
          getline(fin,s); 
          cout << s;
          vec.push_back(s);
       }
    }
    cout << "Press ENTER to continue..." << endl;
    cin.get();
    return 0;
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    GRAZIE!!!

    Un vector perfetto!



    ps:Un'ultima... cosa se non so in anticipo quanto sarà lungo l'array come posso fare?

    es. invece di inizializzare l'array a 5000 elementi oppure fare il for con limiti determinati... es. 5000 appunto come posso fare a metterlo + dinamico?

    Ho provato a mettere il for a 5000 nonostante le stringhe rilevate fossero 4.400 e mi ha dato errore...

    Grazie ancora!


  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se noti non ho impostato a priori una lunghezza al vector. Ci pensa il metodo push_back a inserire i vari elementi aggiustando in automatico la dimensione.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    cosa metto al posto dei puntini? :)

    Originariamente inviato da shodan
    Se noti non ho impostato a priori una lunghezza al vector. Ci pensa il metodo push_back a inserire i vari elementi aggiustando in automatico la dimensione.
    No scusa la domanda + pertinente era:

    Come faccio a visualizzare tutti gli elementi del vector senza incorrere in blocchi o errori mettendo un for non appropriato in quanto a limiti?

    es..

    for (int i=0; i< ......... ; i++)

    cout << vector[i];

    cosa metto al posto dei puntini se non so appunto di quanti elementi è composto il mio array dinamico...?

    GRAZIE INFINITE


  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Usa il metodo size().
    codice:
    int sz = vec.size();
    for (int i=0; i < sz ; i++)
    
    cout << vector[i];
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Grazie adesso non da + errore solo una curiosità...

    Originariamente inviato da shodan
    Usa il metodo size().
    codice:
    int sz = vec.size();
    for (int i=0; i < sz ; i++)
    
    cout << vector[i];
    Quando alla fine prima di chiudere gli chiedo...
    con:


    cout << "\n\n\n";
    cout << "NUMERO DI ELEMENTI DEL VETTORE: ";
    cout << "\n\n\n";
    cout << sz;
    cout << "\n\n\n";


    la stampa a video di sz
    mi da come risultato: 0



    why?

    Comunque sia grazie infinite davvero.


  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    C'e' qualcosa che non torna...

    Sbagliavo a posizionare
    int sz = vec.size();
    prima di popolare il vettore...


    ma c'e' ugualmente qualcosa che non torna... VVoVe:


    Questo il codice integrale:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>

    using namespace std;
    int main (int argc, char *argv[]) {

    vector<string> vec;

    int contatore=0;

    //for (int i=0; i < sz ; i++)

    //cout << vector[i];


    cout << "\n\n\n";
    cout << "Press ENTER to continue...x VISUAZLIZZAZIONE DELLE SINGOLE STRINGHE NELL'ARRAY1..." << endl;
    cout << "\n\n\n";
    cin.get();

    ifstream fin("file1.txt");
    if (fin) {
    string s;
    while(fin) // cattura tutti gli errori.
    {
    getline(fin,s);

    //cout << s;
    vec.push_back(s);
    }
    }

    int sz = vec.size();

    //cout << "\n\n\n";
    //cout << "Press ENTER to continue...x VISUAZLIZZAZIONE DELLE SINGOLE STRINGHE NELL'ARRAY1..." << endl;
    //cout << "\n\n\n";
    //cin.get();

    for (int x=0; x<sz; x++) {

    //contatore++;
    //mostro a video contenuto dell'array formato...

    cout << vec[x];

    }

    cout << "\n\n\n ESEMPIO DI VISUALIZZAZIONE DI UN ELEMENTO ARRAY ALL'INTERNO: ";
    cout << vec[1];
    cout << "\n\n\n";
    cout << "NUMERO DI ELEMENTI DEL VETTORE: ";
    cout << "\n\n\n";
    cout << sz;
    cout << "\n\n\n";
    cout << "Press ENTER to continue...x VISUALIZZAZIONE DELLE SINGOLE STRINGHE DELL'ARRAY2..." << endl;
    cin.get();


    Ora gli elementi del vettore dovrebbero essere 117.480 invece risultano solo: 58741 quasi la metà... why secondo te?

    GRAZIE


  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Come non detto... stavo lavorando su un file incompleto!

    Il codice funziona benissimo!!!

    GRAZIE ancora

  10. #10
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Mi sembrava strano in effetti.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.