09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

250 Capítulo 11. Tipos de datos simples y compuestos<br />

begin {Criba}<br />

primos:= [1..N];<br />

{Se g<strong>en</strong>era el conjunto inicial}<br />

elem:= 2;<br />

while elem < SqRt(N) do begin<br />

{Inv.: Para todo i ∈ primos tal que 1 ≤ i < elem,<br />

se ti<strong>en</strong>e que i es primo}<br />

if elem in primos th<strong>en</strong> begin<br />

k:= 2;<br />

repeat<br />

primos:= primos - [elem * k];<br />

{Se eliminan los números no primos del conjunto}<br />

k:= k + 1<br />

until elem * k > N<br />

<strong>en</strong>d; {if}<br />

elem:= elem + 1<br />

<strong>en</strong>d; {while}<br />

WriteLn(’Los primos m<strong>en</strong>ores que ’, N,’ son’);<br />

EscribirConjuntoPositivos(primos)<br />

<strong>en</strong>d. {Criba}<br />

11.4 Ejercicios<br />

1. Se desea averiguar qué letras intervi<strong>en</strong><strong>en</strong> <strong>en</strong> un texto (sin distinguir <strong>en</strong>tre letras<br />

mayúsculas y minúsculas ni importar su frecu<strong>en</strong>cia), y cuáles se han omitido.<br />

(a) Defina un tipo apropiado para controlar las letras que van apareci<strong>en</strong>do.<br />

(b) Escriba un subprograma que lea el input, formado por varias líneas, ofreci<strong>en</strong>do<br />

como resultado el conjunto de las letras <strong>en</strong>contradas.<br />

(c) Escriba un subprograma de escritura de conjuntos de letras.<br />

(d) Escriba un subprograma que averigüe el cardinal de un conjunto de letras.<br />

(e) Integre los apartados anteriores <strong>en</strong> un programa que averigüe cuáles y cuántas<br />

son las letras distintas <strong>en</strong>contradas y las omitidas <strong>en</strong> el input.<br />

2. Dados los conjuntos conjNum ⊂ {1, . . . , 25} y conjLet ⊂ { ′ A ′ , . . . , ′ Z ′ }, escriba<br />

un subprograma que escriba <strong>en</strong> la pantalla el producto cartesiano conjNum ×<br />

conjLet.<br />

3. Un modo de calcular el máximo común divisor de dos números m y n, <strong>en</strong>teros<br />

estrictam<strong>en</strong>te positivos no superiores a 50, consiste <strong>en</strong> hallar los conjuntos de sus<br />

divisores, divisDeM y divisDeN, luego su intersección, divisComunes, y después<br />

el mayor elem<strong>en</strong>to de este conjunto.<br />

Desarrolle un programa que realice estos pasos dando una salida detallada del<br />

proceso seguido.<br />

4. Los meses del año se conoc<strong>en</strong> por su nombre, aunque a veces también se abrevian<br />

por su número. Desarrolle los sigui<strong>en</strong>tes apartados para ambas repres<strong>en</strong>taciones.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!