Fstrem con stringhe

di il
47 risposte

47 Risposte - Pagina 3

  • Re: Fstrem con stringhe

    Non so se ho capito bene o no, cmq ho fatto in questo modo ...

    #include<iostream>
    #include<cstdlib>
    #include<string.h>
    #include<fstream>
    #define N 100
    
    typedef char stringa[N];
    typedef stringa vettore[N];
    using namespace std;
    
    void input(int&n, vettore v);
    void stampa(int n, vettore v);
    void massimo(int n, vettore v, int&max, int&imax);
    void sostituzione(int n, vettore v, int max, int imax);
    
    void input(int&n, vettore v){
         int i=0;
         fstream f;
         f.open("Lista Pazienti.txt",ios::in);
         while(!f.eof()){
                                          f>>v[i];
                                          i++;
                                          n=i;
                                          }
                                          }
                                          
                                          
    void stampa(int n, vettore v){
         int i;
         cout<<"La lista dei pazienti e':"<<endl;
         for(i=0;i<n;i++){
                          cout<<v[i]<<endl;
                          }
                          }
                          
    void ripetizione(int n, vettore v, int&cont, stringa s){
         int i;
         cont=0;
         cout<<"Inserisci il cognome che vuoi cercare:"<<endl;
         cin>>s;
         for(i=0;i<n;i++){
                          int esito=strcmp(v[i],s);
                          if(esito==0){
                                       cont++;
                                       }
                                       }}
                                       
    void massimo(int n, vettore v, int&max, int&imax){
         int i;
         max=strlen(v[0]);
         imax=0;
         for(i=0;i<n;i++){
                          if(strlen(v[i])>max){
                                               max=strlen(v[i]);
                                               imax=i;
                                               }
                                               }}
                                               
    void sostituzione(int n, vettore v, int max, int imax){
         fstream f;
         int i;
         for(i=0;i<n;i++){
                         if(strlen(v[i])<=5){
                                            strcpy(v[i],v[imax]);
                                            }
                                            f<<v[i]<<endl;
                                            }
                                            f.close();
                                            }
                                               
    int main(){
        int i,n;
        vettore v;
        stringa s;
        fstream f;
        int cont=0;
        int max,imax;
        
        input(n,v);
        stampa(n,v);
        ripetizione(n,v,cont,s);
        cout<<"Il cognome"<<" "<<s<<" "<<"e' presente"<<" "<<cont<<" "<<"volte nella lista dei pazienti!"<<endl;
        massimo(n,v,max,imax);
        cout<<endl<<"Il cognome piu' lungo e':"<<endl<<v[imax]<<endl;
        sostituzione(n,v,max,imax);
        cout<<"La lista in seguito alle ultime modifiche e':"<<endl;
        for(i=0;i<n;i++){
                         cout<<v[i]<<endl;
                         }
        
        system("PAUSE");
        return 0;
    }
        
         
    
    ..ma mi dà sempre lo stesso problema
  • Re: Fstrem con stringhe

    Lo stesso problema quale? A me scrive il file con i nuovi dati.

    Fai un esempio specifico dei dati in input e dell'output che ottieni (e che invece dovresti ottenere)
  • Re: Fstrem con stringhe

    MMMM allora ...

    Il file "Lista Pazienti" inizialmente contiene la lista:

    Edoardo
    Vincenza
    Alessia
    Vincenza
    Piero

    dopo la modifica mi esce a video :

    Edoardo
    Vincenza
    Alessia
    Vincenza
    Vincenza

    ..però se dopo aver eseguito il programma apro il file, la lista è sempre:

    Edoardo
    Vincenza
    Alessia
    Vincenza
    Piero
  • Re: Fstrem con stringhe

    Ho provato l'ultimo codice e ottengo i dati corretti

    Edoardo
    Vincenza
    Alessia
    Vincenza
    Vincenza
  • Re: Fstrem con stringhe

    Va bene, allora forse è un problema del mio pc ! anche perchè quando eseguo i programmi si apre continuamente avast ...spesso me li interrompe !
    cmq grazie della pazienza, so che è stata dura con me ! XD
  • Re: Fstrem con stringhe

    Non credo ad un problema del PC ...

    Cancella tutti i file dati e riprova con altri dati.
  • Re: Fstrem con stringhe

    Fatto ! non vuole proprio andare !
  • Re: Fstrem con stringhe

    Quale ambiente/compilatore usi?
  • Re: Fstrem con stringhe

    Uso il Dev-C++ !
  • Re: Fstrem con stringhe

    Anche se è il peggiore, comunque il codice funziona anche con quello (ovviamente l'ho provato).

    Mi posti l'ultima versione (quella che utilizzi) della funzione sostituzione?
  • Re: Fstrem con stringhe

    Certo ! Eccola qua:
    void sostituzione(int n, vettore v, int max, int imax){
         fstream f;
         int i;
         f.open("Lista Pazienti.txt",ios::out);
         for(i=0;i<n;i++){
                         if(strlen(v[i])<=5){
                                            strcpy(v[i],v[imax]);
                                            }
                                            f<<v[i]<<endl;
                                            }
                                            f.close();
                                            }
  • Re: Fstrem con stringhe

    Ok, funziona ...

    Quindi

    1) o non hai ricompilato il programma l'ultima volta che l'hai modificato

    2) oppure il problema sta da un'altra parte ma non nel codice

    Se vuoi, per chiudere, puoi farmi scaricare in un file .zip, tutti i file del progetto (compresi il file dati e l'eseguibile) per provare nel mio computer.
  • Re: Fstrem con stringhe

    Nono, faccio sempre "compila ed esegui", quindi il problema non è quello ...
    per quanto riguarda il file zip ...come potrei inviartelo ?
  • Re: Fstrem con stringhe

    Mettilo in un'area gratuita da cui poterlo scaricare ... (anche dropbox ...)
  • Re: Fstrem con stringhe

    Ecco qua ! Dovrei aver inviato il file ! XD

    https://www.dropbox.com/sh/2tj2an3sk6mjg89/XaKEglBTN
Devi accedere o registrarti per scrivere nel forum
47 risposte