Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Conversione C-->C++

    Ciao ragazzi..sto cercando di convertire questo pezzo di codice scritto in C...in C++ !
    Il pezzo di codice è una funzione chiamata leggi_mat che legge da file il riempimento ed i valori di una matrice quadrata.
    codice:
    void leggi_mat (matrice mat, int &riemp, const stringa filename){
      int i,j;
      FILE *fp_in;
        
      fp_in=fopen(filename,"r");
      if (!fp_in){
        cout<<"\nIl file "<<filename<<" non e' stato trovato!\nImpossibile proseguire l'elaborazione.\n\n";
        system("PAUSE");
        exit (1);
      }
      fscanf(fp_in, "%d", &riemp);
      for (i=0; i<riemp; i++)
        for (j=0; j<riemp; j++)
          fscanf(fp_in,"%d",&mat[i][j]);
      fclose(fp_in);
    }
    Questa è la chiamata che si trova nel main
    codice:
    cout<<"Inserire il nome del file contenente la prima matrice: ";
      cin>>nomefile;	
      leggi_mat(M1,riempM1,nomefile);
    Potreste aiutami e dirmi solamente come iniziare ??? Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizza la classe fstreama posto delle fopen fscanf fclose
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Mi sorge un dubbio: come faccio a chiedere all'utente il nome del file da aprire ??? Ho provato così ma credo che non vada affatto bene

    codice:
    string nomefile;
    cout<<"Inserisci il nome del file da aprire:"<<"\n";
    cin>>nomefile;
       
    ifstream indata;
    indata.open("nomefile.txt");

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Va bene ma se hai usato la variabile nomefile perché poi non la usi nella open?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Scusa non capisco cosa vuoi dire

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    A me non sembrava propriamente C il codice da te postato comunque...
    In ogni caso dovresti usare nomefile al posto di "nomefile.txt"
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Ho fatto come mi hai suggerito ma non me lo compila

    codice:
    string nomefile;
    cout<<"Inserisci il nome del file da aprire:"<<"\n";
    cin>>nomefile;
       
    ifstream indata;
    indata.open(nomefile);
    Comunque il file che voglio aprire è per forza .txt ...cambia qualcosa ?

  8. #8
    Originariamente inviato da Scara95
    A me non sembrava propriamente C il codice da te postato comunque...
    In ogni caso dovresti usare nomefile al posto di "nomefile.txt"
    Non funziona solo con il C++11?
    K. L. Thompson
    You can't trust code that you did not totally create yourself.
    A. Bogk
    UNIX is user-friendly, it just chooses its friends.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché è necessario un vettore di char per il nome e la modalità, quindi

    indata.open(nomefile.c_str(), ifstream::in);

    Vedi

    http://www.cplusplus.com/reference/i...ifstream/open/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Originariamente inviato da oregon
    Perché è necessario un vettore di char per il nome e la modalità, quindi

    indata.open(nomefile.c_str(), ifstream::in);

    Vedi

    http://www.cplusplus.com/reference/i...ifstream/open/
    In C++11 puoi utilizzare direttamente utilizzare le std::string, senza fare una conversione in char*:

    codice:
    indata.open(nomefile, ifstream::in);
    L'opzione da passare al compilatore per attivare il C++11 é

    codice:
    -std=c++0x
    K. L. Thompson
    You can't trust code that you did not totally create yourself.
    A. Bogk
    UNIX is user-friendly, it just chooses its friends.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.