👤

Subprogramul identice are doi parametri, a și b, prin care primește câte un numărnatural (10≤a≤b≤106).
Subprogramul afișează pe ecran toate numerele naturale din
intervalul [a,b] care au toate cifrele identice. Numerele afișate sunt separate prin câte un
spațiu, iar dacă nu există astfel de numere, se afişează pe ecran mesajul nu exista.
Scrieţi definiţia completă a subprogramului.
Exemplu: pentru a=700 și b=1500 se afișează pe ecran
777 888 999 1111.


CU VECTOR DE FRECVENTA VA ROG
#include
using namespace std;
int main()
{
int a,b,fr[10]= {0},i,nr,n;
cin>>a>>b;
for(i=a; i<=b; i++)
{
n=i;
fr[10]={0};
nr=0;
while(n)
{
fr[n%10]++;
nr++;
n/=10;
}
if(fr[i%10]==nr)
cout< }
}
asta e codul meu, nu inteleg de ce nu merge :'(


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int identice(int a,int b)

{

int nra=1,nrb=1,i,j,p,c,gasit=0;

p=10;

 while (a/p!=0) {p=p*10; nra++;}

p=10;

 while (b/p!=0) {p=p*10; nrb++;}

for(p=nra-1;p<=nrb;p++)

 {

     for(c=1;c<=9;c++)

    {int nr=c;

   for(int i=1;i<p;i++) nr=nr*10+c;

   if(nr>=a && nr<=b) {gasit=1; cout<<nr<<" ";}

 }

 }

 return gasit;

 }

 

int main()

{

 int a,b,nra,nrb,i,j,p;

 cout<<"a=  "; cin>>a;

 cout<<"b= "; cin>>b;

if (identice(a,b)==0) cout<<"Nu exista";}

Explicație:

Nu-mi imaginez cum s-ar face cu vector de frecventa...

nra=nr de cifra ale nr a;

nrb=nr de cifre ale nr b;

generez toate nr cu cifre identice care au un nr de cifre cuprins intre nra si nbr. Pe cele cuprinse intre a si b le afisez.

In var gasit marchez daca am afisat ceva.

Daca gasit este 0, afisez ca nu exista.