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

    [C] Acquisizione coordinate da file

    Salve a tutti, ho una domanda da proporvi.

    Ho due for che mi creano una tabella 15x6.
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]
    [ ][ ][ ][ ][ ][ ]

    Ora ho bisogno di leggere dei valori all'interno di un file, posizionati secondo l'ordine:
    0 0 1 0 2 2 3 3 (quest'ordine è casuale, sono delle coordinate)

    Devo riuscire a disegnare un [X] se quelle coordinate sono presenti nel file, mi spiego meglio:

    se nel file ci sono i numeri 0 0 1 1 significa che mi deve scrivere il [X] nelle coordinate 0,0 e 1,1

    ho provato ad utilizzare un for all'interno dei due for, con il problema che crea eccessive caselle in piu'.

    Qualcuno puo' aiutarmi ?
    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Facci capire meglio come è fatto il file e da quale parte del file devi leggere queste coordinate ... e mostra anche il codice che hai scritto, anche se non ti dà i risultati che vuoi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Allora il codice che genera quella matrice è:

    #define omb1 15
    #define omb2 6

    void conta(){
    FILE *fp;
    fp=fopen("Ombrelloni.txt","r");
    while(!feof(fp)) {
    fscanf(fp,"%d",&x);
    contatore[i]=x;
    i++; }

    for(a=0; a<omb1;a++){
    for(b=0;b<omb2;b++){
    x=contatore[i];
    y=contatore[i+1];
    if(a==x){
    if(b==y){
    printf("[X]");
    };
    }
    else{
    printf("[ ]");
    };

    i=i+2;
    printf("[ ]");
    };
    printf("\n");
    };

    };
    Nell'array contatore assumo i numeri del file Ombrelloni.txt .

    così facendo assumo i due numeri come due coordinate.
    Ho provato ad utilizzare un ciclo for al posto del:
    x=contatore[i];
    y=contatore[i+1];

    così facendo, però, oltre a ciclare per crearmi le caselle cicla anche per controllare ogni singola coordinata, creandomi caselle in base a quanti numeri ci sono nel file.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma ti avevo chiesto anche come era fatto il file ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    il file è semplicemente formato da dei numeri che ho inserito seguito da uno spazio

    in questo momento nel file di testo Ombrelloni.txt ci sono i numeri:

    1 2 3 4
    Immagini allegate Immagini allegate

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A parte il fatto che non si capisce cosa sia contatore e a cosa serva, il consiglio è di rivedere il programma facendo

    1) utilizza un array (anche di interi) e lo dimensioni con le righe e colonne richieste

    2) azzeri tutto l'array

    3) leggi il file scandendo tutte le coordinate presenti usandole come indici per modificare gli elementi dell'array

    4) visualizza l'array scrivendo la X in base al contenuto di ogni elemento
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Perdonami, l'array contatore server per acquisire i valori del file, seguendo quest'ordine
    contatore[0]=1;
    contatore[1]=2;
    contatore[2]=3;
    etc


    ho capito il tuo metodo dell'array bidimensionale per le coordinate, ma non ho capito questo passaggio.


    4) visualizza l'array scrivendo la X in base al contenuto di ogni elemento

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se l'elemento dell'array[x][y] è uguale a 1 visualizza X altrimenti visualizza uno spazio
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ok ho capito, scrivo il codice e poi ti faccio sapere.

    Grazie !

  10. #10
    Ho risolto
    incollo il codice per mostrartelo:

    define omb1 15
    define omb2 6

    int a,b,x,y;
    int array[omb1][omb2];
    FILE *fp;
    fp=fopen("Ombrelloni.txt","r");
    for(a=0;a<omb1;a++){//inizializzo l'array a 0
    for(b=0;b<omb2;b++){
    array[a][b]=0;
    };
    };
    while(!feof(fp)) { // Scorro il file per salvare nella stringa i numeri che trovo
    fscanf(fp,"%d %d",&x,&y);
    for(a=0;a<omb1;a++){ //inizio primo array
    for(b=0;b<omb2;b++){ //inizio secondo array
    if(a==x&&b==y){//se le coordinate sono uguali all'indici dei for, inseriamo nell'array con quelle coordinate il numero 1
    array[a][b]=1;
    };
    };
    };

    };//fine while
    for(a=0;a<omb1;a++){
    for(b=0;b<omb2;b++){
    if(array[a][b]==1){//controllo se all'interno dell'array con indici a e b c'è uno


    printf("[X]"); //se c'è uno stampiamo [x]
    }
    else{
    printf("[ ]");}; //se non c'e 1 stampiamo[ ]

    };
    printf("\n");};


    e con i valori: 1 2 3 4 0 0 1 1 2 0 2 2

    stampa il seguente array in allegato.


    Ti ringrazio
    Immagini allegate Immagini allegate

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.