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

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 :'(


lucaciucandrei: de ce vrei cu vectori de frecv cand se poate foarte usor si fara
daniel22: e ok cum ai gandit nu iti merge resetarea vectorului de frecventa cu 0;
daniel22: incearca memset(fr,0,sizeof(fr)) in loc de fr[10]={0} si sa incluzi biblioteca
daniel22: string.h
Andrei1444: okok multumesc
lucaciucandrei: mama pai daca folosesti memset la bac... :))
daniel22: din moment ce poti folosi strcpy,strchr, nu vad de ce nu ai putea folosi si memset :)
lucaciucandrei: pai ia documenteaza-te de ce si vorbim dupa :)

Răspunsuri la întrebare

Răspuns de simulink
0

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.

Alte întrebări interesante