Está en la página 1de 8

VECTORES

EXPLICACIÓN PRÁCTICA 5
continuación

CADP 2018

Facultad de Informática -
Ejercicio
Hacer un programa que lea una secuencia de números enteros terminada en 0.
Informar la cantidad de veces que aparece cada dígito del 0 al 9 entre todos los
números leídos.
Ejemplo: se leen los números: 457 9875 5 24879 0

{Se debe informar por cada dígito cuántas veces aparecieron cada uno de ellos}
0 aparece 0 veces;
1 aparece 0 veces; ¿Debo almacenar los números leídos?
2 aparece 1 veces;
3 aparece 0 veces;¿Cómo cuento las veces que aparece cada dígito?
4 aparece 2 veces;
5 aparece 3 veces;
0 0 1 0 2 3 0 3 2 2
6 aparece 0 veces;
0 1 2 3 4 5 6 7 8 9
7 aparece 3 veces;
8 aparece 2 veces; ¿Necesito llevar la dimensión lógica?
2 9 aparece 2 veces;
procedure inicializar(var a:numeros);
var i:rango;
begin
for i:=0 to 9 do
a[i]:=0;
Program Digitos;
end;
Type
procedure descomponer(var a:numeros;
rango=0..9;
num:integer);
numeros=array [rango] of
var
integer;
resto:rango;
{Acá se declaran los módulos}
begin
var
while (num <> 0) do begin
losnros:numeros; resto:=num mod 10; {Obtengo
num:integer; digito}
begin {Incremento contador asociado al digito}
inicializar(losnros); a[resto]:=a[resto] + 1;
read(num); num:=num div 10; {Achico número}
while (num <> 0) do begin end;
descomponer(losnros, num); end;
procedure informo(a:numeros);
read(num);
var
end;
i:rango;
informo(losnros);
begin
end.
for i:=0 to 9 do
writeln(i, ‘ = ’,a[i]);
3
end;
M od ifiq u e pa ra in fo rm ar para
procedure inicializar(var a:numeros);
1.
d de
cada número la cantida
var i:rango;
begin
a digito.
ve ce s q u e ap ar e ce c a d
for i:=0 to 9 do
a[i]:=0;
Program Digitos;
end;
Type
procedure descomponer(var a:numeros;
rango=0..9;
num:integer);
numeros=array [rango] of
var
integer;
resto:rango;
{Acá se declaran los módulos}
begin
var
while (num <> 0) do begin
losnros:numeros; resto:=num mod 10; {Obtengo
num:integer; digito}
begin {Incremento contador asociado al digito}
inicializar(losnros); a[resto]:=a[resto] + 1;
read(num); num:=num div 10; {Achico número}
while (num <> 0) do begin end;
descomponer(losnros, num); end;
procedure informo(a:numeros);
read(num);
var
end;
i:rango;
informo(losnros);
begin
end.
for i:=0 to 9 do
writeln(i, ‘ = ’,a[i]);
4
end;
M o d ifiq u e p a ra info rm ar para
procedure inicializar(var a:numeros);
1.
d de
cada número la cantida
var i:rango;
begin
a digito.
ve ces q u e ap ar ec e c a d
for i:=0 to 9 do
a[i]:=0;
Program Digitos;
end;
Type
procedure descomponer(var a:numeros;
rango=0..9;
num:integer);
numeros=array [rango] of
var
integer;
resto:rango;
{Acá se declaran los módulos}
begin
var
while (num <> 0) do begin
losnros:numeros; resto:=num mod 10; {Obtengo
num:integer; digito}
begin {Incremento contador asociado al digito}
inicializar(losnros); a[resto]:=a[resto] + 1;
read(num); num:=num div 10; {Achico número}
while (num <> 0) do begin end;
descomponer(losnros, num); end;
procedure informo(a:numeros);
read(num);
var
end;
i:rango;
informo(losnros);
begin
end.
for i:=0 to 9 do
writeln(i, ‘ = ’,a[i]);
5
end;
M o d ifiq u e pa ra in fo rm ar para
1.
d de
cada número la cantida
ce s q u e ap ar e ce c a d a digito.
ve
Program Digitos;
Type
rango=0..9;
numeros=array [rango] of
integer;
{Acá se declaran los módulos}
var
losnros:numeros;
num:integer;
begin
read(num);
while (num <> 0) do begin
inicializar(losnros);
descomponer(losnros,
num);
informo(losnros);
read(num);
end;
end.

6
M o d ifiq u e pa ra in fo rm ar para
1.
d de
cada número la cantida
ce s q u e ap ar e ce c a d a digito.
ve
Program Digitos;
Type
rango=0..9;
numeros=array [rango] of
integer;
{Acá se declaran los módulos}
var
losnros:numeros;
num:integer;
begin
read(num);
while (num <> 0) do begin
inicializar(losnros);
descomponer(losnros,
num);
informo(losnros);
read(num);
in fo r m ar
q u e p ara
end;
2. M o d ifi v e ce s
qu e m á s
el dígito
end.
d a n ú m e ro
a re c i ó p ara ca
7 ap
Function
DigitoMaximo(a:numeros):rango;
var
Program Digitos;
i, digmax:rango;
Type max:integer;
rango=0..9; begin
numeros=array [rango] of integer; max:=-1;
{Acá se declaran los módulos} for i:=0 to 9 do
var if (a[i] > max) then
losnros:numeros; begin
num:integer; max:=a[i];
begin digmax:=i;
read(num); end;
DigitoMaximo:=digmax;
while (num <> 0) do begin
end;
inicializar(losnros);
descomponer(losnros, num);
write(‘el dig que mas aparece es’,
DigitoMaximo(losnros));
read(num); a ra in fo rmar
. M od ifi q ue p eces
end; 2 e m á s v
qu
end. el dígito acd a n ú me ro
para
8 apareció

También podría gustarte