PDA

Visualizza la versione completa : [C] programma robot


ciaomare
23-06-2012, 18:08
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!











#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;
}

celtico94
23-06-2012, 19:29
tu fai:



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!

torn24
25-06-2012, 11:26
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 :)

Loading