Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11

    [C++] cancellazione files

    ciao a tutti ho questo problema: ho fatto un programma che immetto da tastiera nome squadra, vittorie, pareggi,sconfitte e punti e mi fa la classifica, champions e uefa XD ho però un problema con i files. il problema o sta nel main o nella funzione aggiungi: se scrivo io il file di testo e poi successivamente faccio partire il programma, mi legge il file e mi fa la classifica e se dopo voglio aggiungere una squadra mi dice che è tutto ok, ma all'entrata nella funzione "aggiungi" il file mi diventa vuoto. continua a leggermi la classifica perchè credo che i valori siano copiati nel record sulla ram, ma se poi chiudo e riapro il programma il file database.txt è vuoto. sapete spiegarmi dov'è ke sbaglio?
    grazie ^^

    questo è il programma...

    codice:
    #include <iostream>
        #include <string.h>
        #include <fstream>
        using namespace std;
    
        fstream miofile;
        typedef struct elementi record;
        struct elementi{
               char nome[20];
               int V;
               int P;
               int S;
               int punti;
               };
               
        void aggiungi(record s[],int&riemp)
        {
             miofile.open("database.txt", ios::out|ios::ate);
             if(riemp<=0){
                          cout<<"\nInserire nome squadra: ";
                          cin>>s[riemp].nome;
                          miofile<<s[riemp].nome;
                          miofile<<endl;
                          }
             else{
                  char NOME[20];
                  bool continua;
                  int esito;
                  do{
                       continua=false;
                       cout<<"\nInserire nome squadra: ";
                       cin>>NOME;
                       for(int i=0;i<riemp;i++){
                               esito=strcmp(NOME,s[i].nome);
                               if(esito==0){
                                            continua=true;
                                            cout<<"SQUADRA GIA' ESISTENTE.\a\a\a\n\n\n";
                                            }//IF
                               else{
                                    strcpy(s[riemp].nome,NOME);
                                    miofile<<s[riemp].nome;
                                    miofile<<endl;
                                    }//ELSE
                       }//FOR
                  }while(continua);
             
             }//ELSE
             cout<<"\nInserire VITTORIE: ";
             cin>>s[riemp].V;
             miofile<<s[riemp].V;
             miofile<<endl;
             cout<<"\nInserire PAREGGI: ";
             cin>>s[riemp].P;
             miofile<<s[riemp].P;
             miofile<<endl;
             cout<<"\nInserire SCONFITTE: ";
             cin>>s[riemp].S;
             miofile<<s[riemp].S;
             miofile<<endl;
             s[riemp].punti=(s[riemp].V*3)+s[riemp].P;
             cout<<"\n------> PUNTI: " <<s[riemp].punti <<" <--------\n\n\n";
             miofile<<s[riemp].punti;
             miofile<<endl;
             riemp++;
             miofile.close();
        }
        void scambia(record s[], int i, int posmin)
        {
             record TEMP=s[i];
             s[i]=s[posmin];
             s[posmin]=TEMP;
        }
    
        void classifica(record s[], int&riemp)
        {
             int posmin;
             for(int i=0;i<riemp-1;i++){
                     posmin=i;
                     for(int j=i+1;j<riemp;j++){
                             if(s[j].punti<s[posmin].punti){
                                                            posmin=j;
                                                            }
                     }
                     if(posmin!=i){
                                   scambia(s,i,posmin);
                                   }
             }
        }
    
        void capovolgi(record s[], int&riemp)
        {
             record s2[20];
             int k=riemp-1; 
             for(int i=0;i<riemp;i++){
                     s2[i]=s[k--];
                     }
             for(int j=0;j<riemp;j++){
                     s[j]=s2[j];
                     }
        }
    
    
    
    
        void mostra(record s[], int&riemp)
        {
             cout<<"\n-----------CLASSIFICA------------\n";
             cout<<"   NOME           PUNTI     V     P     S  \n";
             for(int i=0;i<riemp;i++){       
                     cout<<i+1 <<") " <<s[i].nome <<"          " <<s[i].punti <<"         " <<s[i].V <<"     " <<s[i].P;
                     cout<<"     " <<s[i].S <<"\n\n";   
                     }
                     cout<<"\n---------------------------------\n";
        }
    
        void champions(record s[], int&riemp)
        {
             char coppa[20];
             bool b_coppa=true;
             cout<<"\nchi ha vinto la coppa italia? ";
             cin>>coppa;
             cout<<"\nIn champion's league vanno:\n";
             if(riemp<4){
                         for(int i=0;i<riemp;i++){
                                 if(strcmp(coppa,s[i].nome)==0){
                                                               b_coppa=false;
                                                               }
                                 cout<<s[i].nome <<endl;
                                 }
                         if(b_coppa){
                                     cout<<coppa <<endl;
                                     }
                         }
             else{
                  for(int j=0;j<4;j++){
                          if(strcmp(coppa,s[j].nome)==0){
                                                        b_coppa=false;
                                                        }
                          cout<<s[j].nome <<endl;
                          }
                  if(b_coppa){
                              cout<<coppa <<endl;
                              }
             }
             cout<<"----------------------------\n";
        }     
    
        void uefa(record s[], int&riemp)
        {
             if(riemp<4){
                         cout<<"errore! inserire almeno 5 squadre!\n\a";
                         }
             else{
                  cout<<"\nIn europa league vanno:\n";
                  for(int i=4;i<6;i++){
                          cout<<s[i].nome <<endl;
                          }
                  cout<<"----------------------\n";
        }
        }
    
    
        int main(){
            record S[20];
            int RIEMP=0;
            bool CONTINUA=true;
            int scelta;
            bool ciclo=true;
            char SCELTA[20];
           
            if(!miofile){
                cout<<"database non trovato.\n";
                system("pause");
            }
            else{
                miofile.open("database.txt",ios::in);
                while(!miofile.eof()){
                       miofile>>S[RIEMP].nome;
                       miofile>>S[RIEMP].V;
                       miofile>>S[RIEMP].P;
                       miofile>>S[RIEMP].S;
                       miofile>>S[RIEMP].punti;
                       RIEMP++;
            }
            miofile.close();
           
            do{
            cout<<"1)aggiungi\n2)classifica\n3)champion's\n4)europa_league\n0)ESCI\nche vuoi fare??\n";     
            cin>>SCELTA;
            cout<<"\n\n";
            if(strcmp(SCELTA,"1")==0 || strcmp(SCELTA,"aggiungi")==0){
                                       aggiungi(S,RIEMP);
                                       }
            else{
                 if(strcmp(SCELTA,"2")==0 || strcmp(SCELTA,"classifica")==0){
                         classifica(S,RIEMP);
                         capovolgi(S,RIEMP);
                         mostra(S,RIEMP);
                         }
                 else{
                      if(strcmp(SCELTA,"3")==0 || strcmp(SCELTA,"champion's")==0){
                         classifica(S,RIEMP);
                         capovolgi(S,RIEMP);
                         champions(S,RIEMP);
                         }
                      else{
                           if(strcmp(SCELTA,"4")==0 || strcmp(SCELTA,"europa_league")==0){
                             classifica(S,RIEMP);
                             capovolgi(S,RIEMP);
                             uefa(S,RIEMP);
                           }
                           else{
                                if(strcmp(SCELTA,"0")==0 || strcmp(SCELTA,"ESCI")==0 || strcmp(SCELTA,"esci")==0){
                                   ciclo=false;
                                }
                                else{
                                     cout<<"ERRORE!!!!\n\n\n";
                                     }
                           }
                      }
                 }
            }       
        }while(ciclo);
        }
        return 0;
        }
    ho provato sia a fare

    "miofile.open("database.txt", ios:ut|ios::ate)"

    che

    "miofile.open("database.txt", ios:ut|ios::app)"

    ps
    ignorate tranquillamente queste void: champions,uefa,classifica,scabia,capovolgi. lì i file non li tocco prp, sono sicuro che funzionano perchè il programma senza l'uso dei file va perfetto.

    volevo fare "ios::nocreate" o "ios::no replace", ma dice ke non sono inclusi nella libreria... ._.
    spero che qualcuno possa aiutarmi, non riesco proprio a farlo :S
    vi ringrazio ancora ^^

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    niente proprio??

  3. #3
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68
    codice:
    if( remove( "C:\\Nomefile.txt" ) == -1 )
    	cout << "Errore" << endl ;
    else
    	cout << "File eliminato" << endl;

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    non so a cosa serva (e se me lo spieghi mi fai un grosso favore :S), ma il compilatore dice:
    codice:
    -193:48 C:\Users\*****\Desktop\prova.cpp incomplete universal character name \U
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\A' 
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\D'
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\D'

  5. #5
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68
    Originariamente inviato da andre-83
    non so a cosa serva (e se me lo spieghi mi fai un grosso favore :S), ma il compilatore dice:
    codice:
    -193:48 C:\Users\*****\Desktop\prova.cpp incomplete universal character name \U
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\A' 
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\D'
    -193:48 C:\Users\*****\Desktop\prova.cpp [Warning] unknown escape sequence '\D'
    Se non riesci a capire questo pezzo di codice dopo la tua richiesta per cancellare un file e non capisci un IF / ELSE; la programmazione non fa per te

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    11
    stai calmo bill gates. mi serve un aiuto, non un moralismo.
    se mi sai aiutare è bene altrimenti non rispondere proprio.
    l'if else lo capisco, non so cosa sia quel "remove" e perchè mi deve dare messaggi differenti a seconda del valore che assume. se sapessi programmare non starei qui a chiedere aiuto.
    per me potete anche chiudere. grazie

  7. #7
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68
    Originariamente inviato da andre-83
    stai calmo bill gates. mi serve un aiuto, non un moralismo.
    se mi sai aiutare è bene altrimenti non rispondere proprio.
    l'if else lo capisco, non so cosa sia quel "remove" e perchè mi deve dare messaggi differenti a seconda del valore che assume. se sapessi programmare non starei qui a chiedere aiuto.
    per me potete anche chiudere. grazie
    Stai calmo tu, perchè io negli esempi ti ho scritto una determinata cosa ed aspetta te fare attenzione.

    Io ti ho scritto:
    codice:
    if( remove( "C:\\Nomefile.txt" ) == -1 )
    non
    codice:
    if( remove( "C:\Nomefile.txt" ) == -1 )
    Segui l'esempio, non fare di testa tua!

    Sapersi documentare da solo, senza l'aiuto di qualcun'altro è la miglior cosa per imparare il C++

    PS. Sei un genio, se metti come titolo del 3d "Cancellare file" io ti propongo subito un codice per cancellare un file! Sii un pochino più preciso la prossima volta!!!!!

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.