Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15

    fin >> word. Richiesta di inserimento da tastiera errata?

    codice:
    /*
     * Corso di Laurea triennale in informatica
     * Programmazione 1 - Laboratorio
     *
     */
    
    #include <iostream>
    #include <fstream>
    #include <cstring>
    //#include <cstdlib>
    using namespace std;
    
    const int DIM = 100;
    
    int main (int argc, char *argv[]) {
    
       fstream fin, fout;
       char word[DIM], input_file[DIM], output_file[DIM];
       int n=0, ripetizioni=0; char d;
    
       if (argc != 4) {
          cout << argv[0] << ": numero di parametri errato!"
               << endl;
          // exit(0); 
          return 1;
       }
       
       strcpy(input_file,argv[1]);
       d = argv[2][0];
       n = atoi(argv[3]);
    
       fin.open(input_file, ios::in);
    
       if (fin.fail()) {
          cout << argv[0] << ": errore nell'apertura del file "
               << argv[1] << "!" << endl;
          return 1;
       }
       
       cout << "Inserisci il nome del file di output: ";
       cin >> output_file;
       
       fout.open(output_file, ios::out);
    
       if (fout.fail()) {
          cout << argv[0] << ": errore nell'apertura del file "
               << argv[1] << "!" << endl;
          return 1;
       }
    
       fin >> word; 
          
       while (!fin.eof()) { // finche’ lo stram non ha raggiunto la fine       
          ripetizioni=0;
          for(int i=0; i < strlen(word); i++) {
             if (word[i] == d) {
                ripetizioni++;
                if (ripetizioni == n) {
                   fout << word << endl;
                }
             } else {
                ripetizioni=0;
             }
          } 
          fin >> word;       
       }  
       
       fin.close();
       fout.close();
       return 0;
    }

    Buongiorno a tutti. Vi scrivo quest'oggi per cercare di capire a cosa servano i "fin>>word" che trovate nelle ultime righe del programma.

    Vi lascio il testo dell'esercizio:
    Esercizio 2
    Implementare un programma che, dato un le di testo, un carattere D ed
    un intero N passati come argomento da linea di comando, crei un nuovo
    le (il cui nome e letto da tastiera) contenente le parole che contengono
    ripetizioni del carattere D lunghe almeno N.
    Esempio: ./a.out testo.txt n 2
    Inserisci il nome del file di output: risultato.txt
    Creato file risultato.txt !
    anno
    malanno
    sapranno
    anno

    Quello che non riesco a capire è il perché venga messo il fin >> word, quando dovrebbe essere il programma a cercare le parole. Da quello che so io, il fin richiede un inserimento da tastiera di una stringa. Ma nel testo dell'esercizio non viene chiesto di inserire alcuna parola tramite tastiera.

    Qualcuno sa aiutarmi?


    Grazie e buone feste a tutti.

    Stefano

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    L'input da tastiera lo fai con

    cin

    Invece, quel fin è uno stream che tu hai dichiarato e aperto in precedenza. La riga

    fin >> word

    quindi, serve a leggere una linea dal file che hai aperto in lettura.

    Rivedi la gestione dei file con il C++
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.