Pauta Prueba Nº 3

Anuncio
UNIVERSIDAD DE CONCEPCIÓN
FACULTAD DE INGENIERÍA AGRÍCOLA
DEPTO. DE AGROINDUSTRIAS
Juan Carlos Sandoval Avendaño
PAUTA PRUEBA N° 3
LENGUAJE DE PROGRAMACIÓN
INGENIERÍA CIVIL AGRÍCOLA
NOMBRE :___________________________________________ PTOS. :________
TIEMPO MÁXIMO : 1 HORA 40 MINUTOS
FECHA : Lu 10/07/06
,
(1) Para calcular la integral definida M œ '+ 0 ÐBÑ .B se procede a dividir el
intervalo [ +ß , ] en un número 8 par de partes iguales de longitud 2,
obteniendo (8  ") puntos B3 , con 3 œ !ß "ß #ß Þ Þ Þß 8 y donde B! œ + y B8 œ ,Þ
2
‘
Considerando 2 œ ,+
8 y 0 ÐB3 Ñ œ C3 ß se tiene M œ $ C!  % MQ  # T E  C8
donde MQ œ C"  C$  C&  ÞÞÞ  C8" à T E œ C#  C%  C'  ÞÞÞ  C8#
Prepare un programa que permita:
,
+Ñ Calcular la integral '+ /B =/8ÐBÑ .B para 5 intervalos [ +ß , ] distintos
ingresados por el usuarioß usando el método anterior ("Método de
Simpson"). Utilice 8 œ "!.
,Ñ Generar un archivo de texto secuencial con la estructura siguienteß
usando los resultados de la parte +Ñ
#
- Método de Simpson Intervalo
Valor integral
-------------------------------------------------------------------------------------[ xx , xx ]
xxxxxxxxxxxx
:
:
:
:
Número de subdivisiones: xx
Función : xxxxxxx
(30 puntos)
Program MetodoSimpson;
Uses Crt;
Const
n=10;
Type
Vector=array[0..n] of real;
Var
x, y : Vector;
i,j,k : 0..n;
Iteracion : 1..5;
1
m : 1..45;
ar : Text;
a, b, h, IM, PA, Integral : real;
Function f(x:real):real;
begin
f:=exp(sqr(x))*sin(x);
end;
Begin
Assign(ar,'SIMPSON.TXT');
Rewrite(ar);
Writeln(ar,' ':10,'- Método de Simpson -');
Writeln(ar);
Writeln(ar,'Intervalo',' ':20,'Valor integral');
for m:=1 to 43 do
write(ar,'-');
Writeln(ar);
for Iteracion:=1 to 5 do
begin
ClrScr;
Repeat
Write('Ingrese a : '); Readln(a);
Write('Ingrese b : '); Readln(b);
until b>a;
h:=(b-a)/n; x[0]:=a;
for i:=0 to n do
begin
x[i]:=x[0]+i*h;
y[i]:=f(x[i]);
end;
IM:=0; PA:=0;
for i:=1 to 5 do
IM:=IM+y[2*i-1];
for i:=1 to 4 do
PA:=PA+y[2*i];
Integral:=h/3*(y[0]+4*IM+2*PA+y[n]);
Writeln(ar,'[',a:0:1,',',b:0:1,']',' ':20,Integral:0:10);
end;
Writeln(ar,'Número de subdivisiones : ',n);
Writeln(ar,'Función : exp(x^2)*sen(x)');
Close(ar);
End.
(2) +Ñ Escriba una unidad en pascal que permita calcular la norma euclidiana
de una matriz E œ Ð+3 4 Ñ − `8 Ð‘Ñ ß el producto cruz de dos vectores de ‘$ , e
invertir una cadena de caracteres (Ejemplo: HOLA Ä ALOH).
2
,Ñ Escriba un programa en pascal que use la unidad de la parte +Ñ para
guardar en un archivo de texto secuencial de nombre UNIDAD.TXT dos
cadenas ingresadas por el usuario y las respectivas cadenas invertidas.
Además el programa debe mostrar por pantalla un mensaje en azul brillante
que nos indique si la matriz E œ Ð+3 4 Ñ − `$ БÑß con +3 4 œ 343 ß es unitaria.
(30 puntos)
+Ñ
Unit MATHMISC;
Interface
Type
Matriz=array[1..50,1..50] of real;
Vector=array[1..3] of real;
Function Norma(n:integer; A:Matriz):real;
Procedure ProdCruz(x,y : Vector;var z:Vector);
Function CadenaInv(Cadena:string):string;
Implementation
Function Norma(n:integer; A:Matriz):real;
Var
i,j : integer;
Suma : real;
begin
Suma:=0;
for i:=1 to n do
for j:=1 to n do
Suma:=Suma+sqr(A[i,j]);
Norma:=sqrt(Suma);
end;
Procedure ProdCruz(x,y : Vector;var z:Vector);
begin
z[1]:=x[2]*y[3]-x[3]*y[2];
z[2]:=x[1]*y[3]-y[1]*x[3];
z[3]:=x[1]*y[2]-y[1]*x[2];
end;
Function CadenaInv(Cadena:string):string;
Var
i, n : 1..255;
CadenaTemp:string;
SumaLetras : string;
begin
n:=Length(Cadena);
for i:=1 to n do
CadenaTemp[i]:=Cadena[n-(i-1)];
3
SumaLetras:='';
for i:=1 to n do
SumaLetras:=SumaLetras+CadenaTemp[i];
CadenaInv:=SumaLetras;
end;
End.
,Ñ
Program UsoMathMisc;
Uses MathMisc, Crt;
Var
Cadena1, Cadena2 : string;
ar : Text;
i,j : 1..3;
A : matriz;
Function Potencia(x,b : real):real;
begin
Potencia:=exp(x*ln(b));
end;
Begin
ClrScr;
Assign(ar,'UNIDAD.TXT');
Rewrite(ar);
Write('Ingrese primera cadena de caracteres : ');
Readln(Cadena1);
Write('Ingrese segunda cadena de caracteres : ');
Readln(Cadena2);
Writeln(ar,'Primera Cadena : ',Cadena1);
Writeln(ar,'Primera Cadena Invertida : ',CadenaInv(Cadena1));
Writeln(ar,'Segunda Cadena : ',Cadena2);
Writeln(ar,'Segunda Cadena Invertida : ',CadenaInv(Cadena2));
Close(ar);
for i:=1 to 3 do
for j:=1 to 3 do
A[i,j]:=Potencia(j-i,i);
if Norma(3,A)=1.0 then
begin
TextColor(LightBlue);
Writeln('La matriz es unitaria');
end;
End.
4
Descargar