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 œ 343 ß 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