| Username404Error a întrebat:

Cine imi poate spune cum sa sa aflu in Borland Pascal cate numere cu o cifra, cu doua cifre respectiv 3 cifre si asa mai departe se afla intr-un sir? Multumesc anticipat!

6 răspunsuri:
anonim_4396
| anonim_4396 a răspuns:

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!

| AndreiDr a răspuns (pentru anonim_4396):

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.

| anonim_4396 a răspuns (pentru AndreiDr):

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.

anonim_4396
| anonim_4396 a răspuns:

In exemplul dat de mine vei avea nr=3. Adica elementele 451, 100, 599 au k=3 cifre.

| AndreiDr a răspuns:

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.

| Username404Error explică (pentru AndreiDr):

Imi poti da exemplu printr-un program terog?