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
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
#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;
}
Alte întrebări interesante
Studii sociale,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă