Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] programma robot

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    11

    [C] programma robot

    ciao a tutti! devo seguire le istruzioni per far muovere un punto che parte in x,y(0,0).

    le istruzione dentro prova sono "sgsgsgd"
    s sta per SU
    g sta per GIU
    d sta per DESTRA

    è molto intuitivo e semplice ma non capisco perchè usando fgetc(f).. mi legge un carattere si e uno no... infatti mettedo un printf nel ciclio while si nota come mi prenda (s,s,s,d)... in pratica salta un carattere si e uno no... sapete perchè?


    inoltre non mi aumenta il contatore della x!








    codice:
    #include <stdio.h>
    
    
    int main (void) {
    
    
    FILE *f;
    
    f=fopen ("prova.txt", "r");
    
    int x=0;
    int y=0;
    int a;
    
    
                    while ((a=fgetc(f) )!=EOF) {
    printf ("%d\n", a);
                        a=(fgetc(f));
                           if ( a==115)
                           y++;
                    else if (a==103)
                            y--;
                    else if (a==100)
                            x++;
                    }
    
                    printf ("il punto su trova in: %d%d", x,y);
    
    
    
    
    
    fclose(f);
    return 0;
    }

  2. #2
    tu fai:

    codice:
    while ((a=fgetc(f) )!=EOF) 
    { 
            printf ("%d\n", a); 
            a=(fgetc(f));
            ...
    e poi controlli con gli if la a, la tu ne hai già bruciata una perchè nel ciclo leggi un carattere,ma dopo lo butti sovrascrivendo con il carattere successivo. per quanto riguarda la x, forse a non è mai 100!

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    celtico94 ti ha detto esattamente il problema .

    vorrei spiegarlo in maniera più semplice

    leggi il carattere all'interno del while (a=fgetc(f)...
    poi leggi nuovamente un carattere a=fgetc(f);

    quindi leggi due caratteri a ogni ciclo , e controlli solo il secondo

    togli a=fgetc(f); , e leggerai un carattere alla volta e lo confronterai
    Tecnologia

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