Buna. Ma chinui cu problema asta de ceva timp si nu-i dau de capat. Mai intai am incercat cu algoritmul asta, de mine facut :
program textulet;
var f:text;t:string;i,n,cuv,lit:integer;
begin
assign(f,'text.in');
reset(f);
readln(f,t);
close(f);
i := 0; n := length(t); cuv := 0; lit := 0;
while i < n do
begin
i := i + 1;
if (ord(upcase(t[i])) >= 65) and (ord(upcase(t[i])) <= 90) then
begin
cuv := cuv + 1;
while (ord(upcase(t[i])) >= 65) and (ord(upcase(t[i])) <= 90) and (i <= n) do
begin
lit := lit + 1;
i := i+1;
end;
end;
end;
assign(f,'text.out');
rewrite(f);
write(f,int(lit/cuv):0:0);
close(f);
end.
Apoi, cu putin ajutor am incercat cu asta:
program Text2;
var f:text;t:string;n,i:longint;k:0..1;cuv,lit:integer;
begin
assign(f,'text.in');
reset(f);
readln(f,t);
close(f);
n := length(t); k := 0; lit := 0;cuv := 0;
for i := 1 to n do
begin
if (upcase(t[i]) >='A') and (upcase(t[i]) <= 'Z') then
begin
lit := lit + 1;
if k = 0 then
begin
cuv := cuv + 1;
k := 1;
end;
end
else
k := 0;
end;
assign(f,'text.out');
rewrite(f);
write(f,int(lit/cuv));
close(f);
readln;
end.
Primesc doar 40 de puncte. Unde e greseala?
Multumesc
Foloseste tag-ul code cand postezi cod. (Uita-te cum am editat mesajul.)
.