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

Spunem că un număr natural x este rotund dacă există un număr natural nenul k, mai mic strict decât numărul de cifre ale lui x, astfel încât prin permutarea circulară a cifrelor numărului cu k poziţii la dreapta, să se obţină numărul iniţial x.

Cerinţa
Se dă un şir cu n elemente, numere naturale. câte elemente din șir sunt rotunde, și care sunt acestea.

Se va defini şi apela subprogramul rotund care verifică dacă un număr natural, transmis ca parametru, este rotund.

Date de intrare
Pe prima linie a fişierului rotund.in se află numărul n, iar pe a doua linie n numere naturale.

Date de ieşire
Prima linie a fişierului rotund.out va conține numărul de elemente rotunde din șirul dat, iar linia a doua aceste elemente, în ordinea din șirul dat, separate prin exact un spațiu. Dacă în șirul dat nu se află numere rotunde, în fișierul de ieșire se va numai scrie valoarea 0.

Restricţii şi precizări
1 ≤ n ≤ 50
elementele şirului vor avea cel mult 10 cifre
Exemplu:rotund.in

5
12 3232 123 144144 77
rotund.out

3
3232 144144 77

in C++ .Multumesc. Fara vectori sau altceva. Cea mai usoara varianta posibila va rog

Răspunsuri la întrebare

Răspuns de Daniel4761
2

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("rotund.in");

ofstream g("rotund.out");

int rotund(unsigned int x){

   int nr=x, p=1, p2, k=0, c;

   while(nr){k++; p*=10; nr/=10;}

   k--; nr=x; p/=10;

   while(k){

       k--;

       nr=p*(nr%10)+nr/10;

       if(nr==x) return 1;

   }

   return 0;

}

int main()

{

   unsigned int n, x, rotunde=0, v[50];

   f>>n;

   for(int i=1;i<=n;i++){

       f>>x;

       if(rotund(x)){

           rotunde++;

           v[rotunde]=x;

       }

   }

   if(rotunde){

       g<<rotunde<<'\n';

       for(int i=1;i<=rotunde;i++)

           g<<v[i]<<' ';

   }

else g<<0;

f.close();

g.clsoe();

   return 0;

}


Daniel4761: am facut
Daniel4761: Ti-am dat deja
Daniel4761: Aaa fara vectori
Daniel4761: Asta inseamna sa afisez prima data numerele apoi cate sunt
Daniel4761: dar nu mai respecta cerinta
Daniel4761: vrei asa?
CiobanuDan2007: Da
Daniel4761: #include
#include
using namespace std;
ifstream f("rotund.in");
ofstream g("rotund.out");
int rotund(unsigned int x){
int nr=x, p=1, p2, k=0, c;
while(nr){k++; p*=10; nr/=10;}
k--; nr=x; p/=10;
while(k){ k--;
nr=p*(nr%10)+nr/10;
if(nr==x) return 1;
}
return 0;
}
int main()
{
unsigned int n, x, rotunde=0, i;
f>>n;
for(i=1;i<=n;i++){
f>>x;
if(rotund(x)){
rotunde++;
g< }
}
if(rotunde) g<<'\n'< else g<<0;
f.close();
g.close();
return 0;
}
Daniel4761: sub 'rotunde++' scrie g << x;
Daniel4761: si sa adaugi iostream si fstream ca nu s-au scris cand am dat paste la cod
Alte întrebări interesante