Informatică, întrebare adresată de vladdobro07, 8 ani în urmă

melc varena.ro +> Melc
Un melc se plimbă în sus şi în jos pe trunchiul unui copac, pe un traseu vertical. El porneşte dintr-un punct START, merge o anumită distanţă în sus, schimbă direcţia şi merge o anumită distanţă în jos, apoi iarăşi schimbă direcţia etc.
Distanţele parcurse, alternând mereu direcţiile, sunt:
1 cm (în sus), 1 cm (în jos), 1 cm (în sus),
1 cm (în jos), 2 cm (în sus), 2 cm (în jos),
1 cm (în sus), 3 cm (în jos), 3 cm (în sus),
1 cm (în jos), 4 cm (în sus), 4 cm (în jos),
1 cm (în sus), 5 cm (în jos), 5 cm (în sus),
1 cm (în jos), 6 cm (în sus), 6 cm (în jos),
1 cm (în sus) …
Plimbarea continuă până la efectuarea unui număr total de n cm.
Cerinţă
Dându-se n, numărul de cm realizaţi în total, urmând regula de mai sus, se cere să se afle la câţi cm distanţă se află el faţă de punctul de pornire, START.
Date de intrare
Fişierul de intrare melc.in conţine un număr natural n.
Date de iesire
Fisierul de intrare melc.out va contine distanta ceruta.

Răspunsuri la întrebare

Răspuns de boiustef
2

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

   ifstream f("melc.in");

   ofstream g("melc.out");

   int n, i=0, s=0, dir=-1, dist=0;

   f >> n;

   while (s<n)

   {

      ++i;

      dir*=-1; dist+=1*dir; s+=1; if (s==n) {break;}

      dir*=-1; dist+=i*dir; s+=i; if (s==n) {break;}

      dir*=-1; dist+=i*dir; s+=i; if (s==n) {break;}

   }

   if (dist<0) dist*=-1;

   g << dist;

   return 0;

}



boiustef: ps. dist e folosita pt distanta de la punctul START
dir ............ pt directie 1- miscare in sus, -1 - in jos
s ............. pt drumul parcurs
vladdobro07: Multumesc mult!
Alte întrebări interesante