Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43

    [C]acquisizione matrice da file

    salve raga..sono alle prese con una acquisizione da un file .txt di una matrice.
    solo che essendo la prima volta che mi accade una cosa del genere non saprei da dove inziare..
    vorrei qualche consiglio sull acquisizione..cioè dovrei far variare i 2 indici come quando la inserisco da tastiera.,,,oppure c è qlche modo in particolare??grazie mille in anticipo!

  2. #2
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    Nella biblioteca <stdio.h> puoi utilizzare:

    fopen() per aprire un file

    fscanf() per leggere dal file

    Su quest'ultima funzione ci sono diversi modificatori per poter leggere i caratteri in diversi modi. Una volta letti i caratteri, li salvi dentro una matrice in C e poi la stampi a video col printf().

  3. #3
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao ... Dipende da come è strutturato il file da leggere e comunque puoi farlo in più modi ... Esempio se il file è strutturato così :
    codice:
    0 1 2 3
    4 5 6 7
    8 9 10 11
    12 13 14 15
    In questo caso devi memorizzare una matrice 4x4 e puoi farlo attraverso dei cicli innestati:
    codice:
    for(riga=0; riga<4; riga++)
        for(colonna=0; colonna<4; colonna++)
            fscanf(Data, "%d", &Matrice[riga][colonna]);
    Ovvio che in questo caso le dimensioni della matrice sono conosciute a compile-time (nel tuo caso anche???)... Magari possiamo darti un maggiore aiuto se fornisci maggiori informazoni ...
    @ xshell : biblioteca?!?!?!?
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43
    xshell si leggere da file sono in grado di farlo...solo che finora mi era sempre capitato di leggere stringhe,,,o serie di interi....o simili..questa volta è una matrice e sono entrato nel pallone.
    grazie krow...era più facile di quanto sembrava...però nel caso in cui non conosciamo la dimensione della matrice come mi devo comportare? devo porre dino al end of file?

  5. #5
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Potresti inserire nel file (quando lo scrivi) le dimensioni della matrice prima dei dati della stessa ... Esempio :
    codice:
    4 4
    0 1 2 3
    4 5 6 7
    8 9 10 11
    12 13 14 15
    i primi 2 numeri indicano rispettivamente numero di righe e numero di colonne ... Per gli altri è lo stesso discorso di prima ... A questo punto allochi una matrice avente le dimensioni righe x colonne:
    codice:
    int** Matrice;
    int nrighe, ncolonne, i;
    fscanf(Data, "%d%d", &nrighe, &ncolonne);
    Matrice = (int**)calloc(nrighe, sizeof(int*));
    for(i=0; i<4; i++)
         Matrice[i] = (int*)calloc(ncolonne, sizeof(int));
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43
    krow dunque da quello che mi hai detto ho capito che in un modo o nell altro bisogna sempre sapere la dimensione dela matrice. era prorpio qui il mio dubbio..cioè se mi danno un file dove non ho nessun modo di trovare numero di righe/colonne non è possibile acquisire una matrice..
    io pensavo che si potesse fare ,.cioè fissare per esempio una matrice con dim grandi,,per poi acquisisire dato per dato,,,fino a quando non si finisce..la riga,,,e poi tutte le righe,,
    è corretto quanto detto?

  7. #7
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Be se fai in modo che i dati della matrice siano posti in un determinato ordine puoi farlo . . . Esempio :
    codice:
    0 1 2 3
    4 5 6 7
    8 9 10 11
    Qui leggi prima il numero di righe del file e il numero degli elementi di ogni riga (in questo caso ci sono 3 righe e 4 elementi per riga) . Fatto questo sappiamo le dimensioni della matrice (in questo caso 3x4) e quindi possiamo allocarla. Poi rileggi il file dall' inizio e inserisci i dati nella matrice . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

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.