Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C++] File e matrici

  1. #1

    [C++] File e matrici

    Salve ragazzi,premetto che sono alle prime armi con la programmazione.
    Per esercitarmi per un esame volevo provare a scrivere una matrice in un file. Quando compilo e poi esegue sembra tutto ok,quando vado ad aprire il file non mi esce la matrice
    Ho provato di tutto,non so come fare !
    linguaggio c++ e uso il dev-c++ 5.11
    Questo è il programma:
    codice:
    #include <iostream>
    #include <fstream> //header necessario per fstream!
    #define maxr 3
    #define maxc 3
    using namespace std;
    int crea_matrice (int matrice[maxr][maxc])
    {
    
        int i,j;
        for ( i=0; i<maxr; i++)
    
            for ( j=0; j<maxc; j++)
            {
                cout<<"matrice["<<i<<"]["<<j<<"]"<<"\n";
                cin>>matrice[i][j];
            }
    }
    
    
    int stampa_matrice (int matrice[maxr][maxc])
    {
        cout<<"\n\n";
        for (int i=0; i<maxr; i++)
        {
            cout<<"\n";
            for (int j=0; j<maxc; j++)
            {   cout<<"\t"<<matrice[i][j];
            }
        }
    }
    int main() {
        fstream f("file1.txt", ios:: out); //apre il file in scrittura (cancellando quello che già c'era
        string s;
    
    
        if(!f) {
            cout<<"Errore nella creazione del file!";
            return -1;
        }
        int matrice[maxr][maxc];
        crea_matrice(matrice);
        cout<<"la matrice è:"<<endl;
    
        f<<stampa_matrice(matrice);
    
    
        f.close();
    
    };
    Ultima modifica di MItaly; 29-01-2016 a 00:12 Motivo: Indentazione, tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    32
    Quote Originariamente inviata da AdelaidePuglies Visualizza il messaggio
    Salve ragazzi,premetto che sono alle prime armi con la programmazione.
    Per esercitarmi per un esame volevo provare a scrivere una matrice in un file. Quando compilo e poi esegue sembra tutto ok,quando vado ad aprire il file non mi esce la matrice
    Ho provato di tutto,non so come fare !
    linguaggio c++ e uso il dev-c++ 5.11
    Questo è il programma:

    #include <iostream>
    #include <fstream> //header necessario per fstream!
    #define maxr 3
    #define maxc 3
    using namespace std;
    int crea_matrice (int matrice[maxr][maxc])
    {

    int i,j;
    for ( i=0; i<maxr; i++)

    for ( j=0; j<maxc; j++)
    {
    cout<<"matrice["<<i<<"]["<<j<<"]"<<"\n";
    cin>>matrice[i][j];
    }
    }


    int stampa_matrice (int matrice[maxr][maxc])
    {
    cout<<"\n\n";
    for (int i=0; i<maxr; i++)
    {
    cout<<"\n";
    for (int j=0; j<maxc; j++)
    {cout<<"\t"<<matrice[i][j];
    }
    }
    }
    int main() {
    fstream f("file1.txt", ios:: out); //apre il file in scrittura (cancellando quello che già c'era
    string s;


    if(!f) {
    cout<<"Errore nella creazione del file!";
    return -1;
    }
    int matrice[maxr][maxc];
    crea_matrice(matrice);
    cout<<"la matrice è:"<<endl;

    f<<stampa_matrice(matrice);


    f.close();

    };


    Non ho ben capito quale sia il tuo problema , vuoi per caso inserire la matrice 3x3 che l'utente digita a tastiera in un file di testo?

    Se si potresti fare così:

    codice:
    #include <iostream>
    #include <fstream>
    #define maxr 3
    #define maxc 3
    using namespace std;
    typedef char VettoreCaratteri[256];
    
    
    int crea_matrice (int matrice[maxr][maxc]){
        int i,j;
        for ( i=0; i<maxr; i++){
            for ( j=0; j<maxc; j++){
            cout<<"matrice["<<i<<"]["<<    j<<"]"<<"\n";
            cin>>matrice[i][j];
            }
        }
    }
    
    
    int stampa_matrice (int matrice[maxr][maxc]) {
    cout<<"\n\n";
        for (int i=0; i<maxr; i++){
            cout<<"\n";
            for (int j=0; j<maxc; j++){
                cout<<"\t"<<matrice[i][j];
            }
        }
    }
    
    
    void CreaFileTesto(VettoreCaratteri filename,int matrice[maxr][maxc]) {
        fstream f;
        f.open(filename,ios::out);
        if(!f)
            cout<<"Errore nella creazione del file!";
        else{
            f<<maxr<<endl;
            f<<maxc<<endl;
            for ( int i=0; i<maxr; i++){
                for ( int j=0; j<maxc; j++){
                    f<<matrice[i][j]<<" ";
                }
            f<<endl;
            }
        }
        f.close();
    }
    
    
    int main(int argc, char** argv) {
        int matrice[maxr][maxc]; 
        crea_matrice(matrice);
        stampa_matrice(matrice);
        cout<<"\nCreazione file in corso...\n";
        CreaFileTesto("matrice.txt",matrice);
        cout<<"\nIl file e' stato creato con successo\n";
        return 0;
    }
    Ho creato un altro sottoprogramma "CreaFileTesto" che ti mette in un file di testo nel primo rigo il numero di righe
    nel secondo il numero di colonne
    e poi la matrice stessa . . . (ammesso che era questo che volevi sapere...)

    N.B.: Ho messo numero di riga e colonna nel file testo così se vuoi creare un'altra funzione "LeggiFileTesto" ad esempio puoi subito trovare numero di riga e colonna e leggere la matrice direttamente dal file testo piuttosto che da tastiera .

    P.S.: Ti consiglio di usare "[ CODE ] *InserisciQuiIlCodice* [ / CODE]" (senza spazi) per inserire porzioni di codice così da facilitarne la lettura.

    P.P.S.: Nel caso in cui non era questo ciò che volevi facci sapere , magari aspettiamo anche qualcun'altro bravo del forum, ciao
    Ultima modifica di Warioss; 28-01-2016 a 15:08

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da AdelaidePuglies Visualizza il messaggio
    quando vado ad aprire il file non mi esce la matrice
    L'errore che fai è nella riga

    f<<stampa_matrice(matrice);

    che non fa affatto quello che pensi (ovvero salvare i dati su file).

    Se vuoi salvare i dati devi farlo nella funzione inserendo f al posto di cout. Ovviamente la funzione non conoscerà f e quindi lo dovrai passare come ulteriore parametro.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Quote Originariamente inviata da oregon Visualizza il messaggio
    L'errore che fai è nella riga

    f<<stampa_matrice(matrice);

    che non fa affatto quello che pensi (ovvero salvare i dati su file).

    Se vuoi salvare i dati devi farlo nella funzione inserendo f al posto di cout. Ovviamente la funzione non conoscerà f e quindi lo dovrai passare come ulteriore parametro.
    Una volta cambiato cout con f,quando vado ad aprire il file,mi da la matrice tutta su una sola riga e non su 3 righe.
    @Warrios grazie mille,non avevo pensato a creare un'ulteriore funzione !

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da AdelaidePuglies Visualizza il messaggio
    Una volta cambiato cout con f,quando vado ad aprire
    Prevedi un

    f<<endl;

    nel ciclo per andare a capo ... no?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    32
    Quote Originariamente inviata da AdelaidePuglies Visualizza il messaggio
    Una volta cambiato cout con f,quando vado ad aprire il file,mi da la matrice tutta su una sola riga e non su 3 righe.
    @Warrios grazie mille,non avevo pensato a creare un'ulteriore funzione !
    Figurati , felice di esserti stato d'aiuto .
    Nel caso non vuoi vedere numero di righe e colonne nel file testo ti basta eliminare
    codice:
    f<<maxr<<endl; 
    f<<maxc<<endl;

  7. #7
    Grazie ad entrambi,il programma finalmente mi viene ed esce la matrice nel file
    Vorrei chiedervi un'ultima cosa,se non posso qui apro un'altra discussione senza problemi
    Praticamente un paio di programmi me li compila,ma mentre li eseguo,arrivata quasi alla fine mi esce un'altra finestra con scritto "progetto.exe ha smesso di funzionare"
    non capisco perché,non mi fa nemmeno controllare se il programma è giusto.
    Per esempio questo è uno di quei programmi che mi crea il problema:

    "
    codice:
    //questo programma calcola la somma e la media tra due numeri usando gli array
    #include <iostream>
    #include <math.h>
    using namespace std;
    #define N 10
    typedef int arraydiReali[N];
    arraydiReali v;
    
    
    
    
    
    
    
    
    
    
    int main() {
    int i;
    int v[i];
    int som; 
    som=0;
    
    
    for ( int i=0; i<N; i++)
    {
    cout<<"v["<<i<<"]="<<endl;
    cin>>v[i];
    
    
    } 
    
    som+=v[ i];
    system ("pause");
    
    }
    "

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Altro problema, altro thread.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ok grazie =)

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.