Pascal/Turbo Pascal - Necesito el ALGORITMO URGENTE

 
Vista:

Necesito el ALGORITMO URGENTE

Publicado por jube (10 intervenciones) el 05/04/2013 20:26:41
hola necesito los algoritmos de los siguientes programas:
cuando me refiero a algoritmos me refiero a:

algoritmo dientes_de_sierra;
x,y: real;
{Pre = x = X}
var k: entero; fvar
si -5 <= x -> k:= 0;
{Inv} {cota = x - 10 * k}
mientras x >= 10 * k + 5 hacer
k:= k+1;
fmientras
[] -5 > x-> k:=............;
{ Inv'} {cota...}
mientras 'condición de continuación’ hacer
'avanzar'
fmientras
fsi;
{Q = x = X and 10 * k - 5 <= x < 10 * k +5}
y:= (3/5) * (x-10* k)
{Post = y = f(x) and x = X}

falgoritmo




8. Raíz aproximada
Dada la especificación

n, r: entero:
{Pre = n = N and N>= 1}
raíz-aproximada
{Post = r^3 < N < (r + 1)^3}

Deriva un algoritmo basado en un único bucle que resuelva el problema. Se debe
utilizar como invariante para el bucle el predicado siguiente

Inv = r^3 < N and n = N and a = (r +1)^3 and b = (r + l)^2

Para este ejercicio, no está permitido el producto de dos variables, pero sí está
permitido el producto de una constante por una variable. Por ejemplo no está
permitido x*x ni x*x*x, pero sí está permitido 2 * x ó 3 * x.

Da una función de cota.


9. Ackermann inferior
Sea la función de Ackermann A. definida sobre los números naturales

A(0) = 1
A(i) = 2 * A(i div 2) , para i par e i > 0
A(i) = (i div 2) + A(i - 1) , para i impar e i > 0

Diseña mi algoritmo con un solo bucle que resuelva el siguiente problema

n, i: entero;
{Pre = n = N and 1 < N < 99}
rango
{Posí = n = N and A(i) <=n< A(i + 1)}

Siendo el invariante del bucle el predicado siguiente

Inv = n = N and A(i) <= n and f = A(i+ 1) and (Vj : 0 <= j <= i : t [j] = A(j))

Teniendo en cuenta que i <=A(i), se ha dispuesto una tabla auxiliar

t: tabla[0..99] de entero

para guardar los valores de la función A que se han calculado en anteriores itera-
ciones.

Da una función de cota.

creo ke estan bien copiadas en caso contrario avisad. muchas gracias por adelantao
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Necesito el ALGORITMO URGENTE

Publicado por jube (10 intervenciones) el 06/04/2013 23:33:30
hasta ahora el 9 lo tengo así:


Algoritmo (rango);
............... n, i: entero;
............. {Pre = n = N and 1 <= n <= 99}
............... Rango
..............{Post = n = N and A(i) <= n <= A(i+1)}
..............{Inv = n = N and A(i)<= n and f = A(i+1) and (para todo j:0 <= j <= i : t[j] = A (j))

Propuesta de invariante: en el enunciado del problema nos viene dado el invariante. A partir del invariante podemos sacar la instrucción de finalización:
{¬ B = n < f}

Cálculo de la instrucción de continuación: solo hace falta negar la instrucción de finalización.
{B = n >= f}

Cálculo de la instrucción de inicialización:
f:= 1; t[0]:= 1; i:= 1;

Cálculo de instrucción avanzar:
i:= i + 1;

Cálculo de instrucción restablecer:
B and Inv = n = N and A(i) <= n <= f = A(i+1) and (para todo j:0 <= j <= i : t[j] = A (j)) and n >= f
Inv_(i+1)^i= n= N and A(i+1) <= n and f = A(i+2) and (para todo j :0 <= j <= i: t[j] = A(j)) and t[i + 1] = A(i+1)
............................................................................................................................................................... t[i+1]:= f;
si (i + 2) mod 2 = 0 -> 2 · A (i div 2) -> 2 · A (i div 2 + 1)
[](i + 2) mod 2 <> 0 -> (i div 2) + A(I - 1) -> (i + 2 div 2) + A(i+1)
......................................................................... (i div 2 + 1) + A(i + 1)
......................................................................... (i div 2 + 1) + t[i + 1]

Cota:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito el ALGORITMO URGENTE

Publicado por ramon (2158 intervenciones) el 08/04/2013 21:07:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{Siento no poder entender lo que quieres por no ver bien el texto pero a ver si esto es algo}
 
program ackermann;
uses crt;
procedure leerpar(var m, n : Integer);
begin
    writeln('Ingrese un numero: ');
    readln(m);
    writeln('Ingrese el otro numero: ');
    readln(n);
end;
function ackermann(m, n : Integer) : LongInt;
begin
    if m = 0 then
        ackermann := n + 1
    else if (m > 0) and (n = 0) then
        ackermann := ackermann(m - 1, 1)
    else if (m > 0) and (n > 0) then
        ackermann := ackermann(m - 1, ackermann(m, n - 1));
end;
 
var m, n : Integer;
 
begin
    clrscr;
    leerpar(m,n);
    writeln(ackermann(m, n));
    readkey;
end.


para la onda diente de sierra
f(x) = (2/p)[sen x - (1/2)sen 2x + (1/3)sen 3x - (1/4)sen 4x + ------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar