Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36

    [C/C++] Lettura dati da file

    Ciao a tutti, ho un problema con un programma in C.
    in pratica devo creare una piccola battaglia navale, che permetta di scegliere se caricare lo schema delle navi da file, farlo creare sul momento dall'utente o caricarne uno memorizzato nel sorgente. Quello che non so come fare è far leggere lo schema da file, che si presenta in questo modo:

    start
    A 3 2 1
    F 4 2 0
    D 1 3 0
    E 6 3 0
    C 3 4 1
    end

    nella prima riga leggo la prima nave (che nella matrice indico con gli 1):
    A3 sono le coordinate della prima casella su cui è posizionata la nave, 2 è la lunghezza della nave, e 1 è la disposizione (1=orizzontale 0=verticale).

    nella seconda riga leggo la seconda nave (indicata con i 2) e così via fino alla 5° nave.

    letto questo schema devo trasferire i dati in una matrice, che dovrebbe assumere questo aspetto:

    | 0 1 2 3 4 5 6
    --|--------------------
    A | 0 0 0 1 1 0 0
    B | 0 0 0 0 0 0 0
    C | 0 0 0 5 5 5 5
    D | 0 3 0 0 0 0 0
    E | 0 3 0 0 0 0 4
    F | 0 3 0 0 2 0 4
    G | 0 0 0 0 2 0 4

    in pratica devo ottenere questo:
    navi_utente[righe][colonne]={{0,0,1,1,0,0,0},{0,0,0,0,0,0,0},{0,0,5,5,5,5,0}, {3,0,0,0,0,0,0},{3,0,0,0,0,4,0},{3,0,0,2,0,4,0},{0 ,0,0,2,0,4,0 }};

    Come faccio?? non ho molta domestichezza con i file, e non so come andare a leggere i dati e portarli nella matrice... qualcuno può aiutarmi??

    Grazie mille!! ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36
    scusate.. stavo dimenticando un particolare... all'interno del file ci sono più schemi, delimitati dalle voci "start" e "end", all'inizio del programma devo indicare il numero dello schema da leggere.....

  3. #3
    beh, intanto è strutturato male il file, cioè, se dici che devi leggere uno schema particolare ti conviene di numerare gli schemi

    qualcosa come 1start e 1end

    visto che poi sarebbe l'unico caso in cui il comando inizia con un numero ti andrebbe bene

    detto ciò tu hai le seguenti funzioni:

    int fgetc( FILE *stream );//legge un unico carattere
    char *fgets( char *str, int num, FILE *stream );//legge una riga
    int fscanf( FILE *stream, const char *format, ... );//legge delle parole

    secondo me ti conviene leggere per riga (fgets), appena trovi start controlli se il numero dopo start è il numero dello schema che vuoi, se è così lavori sulle stringhe sottostanti fino ad arrivare ad end, se invece non ti aggrada cerchi il prossimo start

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.