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ăspunsuri la întrebare
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.