Lo struzzo Simone

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

  1. Il file di input non contiene altri caratteri oltre a quelli precisati.
  2. Il numero complessivo di spostamenti contenuti nel file di input è minore o uguale a 100000.
  3. 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.
  4. 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;
}

Lascia un commento