Intr-un sir. banuiesc ca te referi la un vector, atunci parcurgi dai la o variabila oarecare valoarea 1, si iti trebuie un while valoarea respectiva e diferita de 0 do begin
bagi un for, testezi fiecare v[i](unde i e de la for i:=1 to n do begin), testand inseamna ca ii faci o copie, while co0 do begin
contor:=contor+1;
co:=co div 10;
end;
aici iti scoate din cate cifre e format, daca este egal cu valoarea de ai dat-o inainte de for. atunci ai un contor in acel while, care creste, cand iese, din for. il afisezi. si apoi la contor ii dai iar 0 cand incepe while-u. si el afiseaza pana cand tu nu ai mai valori in vector care sa depaseasca. de ex. cel mai lung are 3 cifre. cand testeaza 4 cifre. iti va scoate 0 cifre. si atunci se opreste.
Deci ai ca date de intrare un vector/sir de numere si un numar k dupa care se vor numara cate elemente din sir au k cifre.
Exemplu: v=(1, 3,33, 451,23311, 23315,91, 100,49,599)
k=3;
program numarkcifre;
var v:array[1.100] of integer;
k,i, n, p, nr, x:integer;
begin
write('n= '); readln(n); {citire dimensiune sir}
write('k= '); readln(k); {citire numar cifre }
{citire sir}
for i:=1 to n do
begin
write('v[', i,']= ');
readln(v[i]);
end;
{afisare sir}
for i:=1 to n do
write(v[i],' ');
nr:=0;
{determinare numar cifre pentru fiecare element si numarare a celor care indeplinesc conditia }
for i:=1 to n do
begin
x:=v[i]; p:=0;
repeat
x:=x div 10;
p:=p+1;
until x=0;
if p=k then inc(nr);
end;
writeln;
writeln('Numarul de elemente din sir de ', k,' cifre este ', nr);
readln;
end.
Copiaza-l, compileaza-l, ruleaza-l! Functioneaza corect? Nelamuriri? Daca nu atunci sa-ti fie de bine!
Bula, citeste enuntul, iti cere sa afisezi cate numere sunt cu 1 cifra, 2 cifre, 3 cifre, 4., 10 cifre., pana cand nu mai ai in vector niciun numar care sa aiba numarul de cifre., sa zicem 10 cifre e cel mai mare., merge si la 11, dar nu afiseaza ca., nu are., si se opreste.
Ai nu vorbi, iepulas! Si eu ce am facut? Sau te referi la faptul ca am stabilit un k fixat de la bun inceput pe care-l specifici ca data de intrare? Adica sa-l fi luat ca un contor de la 1 la 5, sa zicem, pentru maxim la integer. Tot cam aia, apoi sub un asemenea FOR(probabil) bagai celalalt FOR si REPEAT-ul pe care le-am scris mai sus, eventual ceva retusari la afisare. Macar sa inteleaga ideea asa.