Fase territoriale 2001
Lo struzzo Simone si sposta solo nelle direzioni dei quattro assi cardinali (Nord, Sud, Est, Ovest).
Ogni suo passo misura 1 metro.
Dovete scrivere un programma che, data una sequenza di spostamenti di Simone, misuri quant’è la distanza fra il punto di partenza e il punto di arrivo.Dati in input
Il file input.txt contiene la sequenza degli spostamenti.
Tale file è costituito da un’unica riga di testo, contenente una sequenza di S, N, E, O (che indicano gli spostamenti nelle direzioni Sud, Nord, Est, Ovest rispettivamente).
La sequenza è terminata da un *.
Ad esempio, il file di input NNESO* dice che Simone si sposta di due metri a Nord, poi di un metro verso Est, poi di un metro verso Sud, e quindi di un metro a Ovest.Dati in output
Il programma, dopo aver letto il file di input, deve calcolare la distanza in metri fra il punto di partenza e il punto di arrivo, e scriverla su un file di nome output.txt.
Più precisamente, il file output.txt deve contenere un’unica riga.
Su questa riga dovrà comparire il numero intero corrispondente al quadrato della distanza.Assunzioni
- Il file di input non contiene altri caratteri oltre a quelli precisati.
- Il numero complessivo di spostamenti contenuti nel file di input è minore o uguale a 100000.
- Importante! Il programma non deve scrivere nulla sul video, e non deve interagire con l’utente. Deve solo leggere il file di input e scrivere il file di output.
- L’esecuzione del programma deve terminare entro 5 secondi.
Esempi
input.txt output.txt NNSEEESNOENNS* 13 NNESOS* 0 OSOS* 8
/* www.valcon.it OII 2001 - Fase territoriale - LO STRUZZO SIMONE */ #include#include #include using namespace std; int main() { ifstream fin ("input.txt"); ofstream fout("output.txt"); string s; int i,px,py; fin >> s; i=px=py=0; while(s[i] != '*') { switch(s[i]) { case 'N': py++; break; case 'E': px++; break; case 'S': py--; break; case 'O': px--; break; } i++; } int risposta=px*px+py*py; fout << risposta << endl; return 0; }
/* www.valcon.it OII 2001 - Fase territoriale - LO STRUZZO SIMONE */ #include int main() { FILE *fileIN =fopen("input.txt", "r"); FILE *fileOUT=fopen("output.txt", "w"); int px=0, py=0; char c; while((c=fgetc(fileIN)) != '*') { switch(c) { case 'N': py++; break; case 'E': px++; break; case 'S': py--; break; case 'O': px--; break; } } int risposta=px*px+py*py; fprintf(fileOUT, "%d\n", risposta); return 0; }