Pauta Examen - Universidad de Concepción

Anuncio
UNIVERSIDAD DE CONCEPCIÓN
FACULTAD DE INGENIERÍA AGRÍCOLA
DEPTO. DE AGROINDUSTRIAS
Juan Carlos Sandoval Avendaño
PAUTA EXAMEN
LENGUAJE DE PROGRAMACIÓN
INGENIERÍA CIVIL AGRÍCOLA
NOMBRE :___________________________________________ PTOS. :________
TIEMPO MÁXIMO : 2 HORAS
FECHA : Lu 24/07/06
(1) Escriba un programa en pascal que muestre por pantalla, en color, las
soluciones de la ecuación cúbica .B$  +B#  ,B  - œ !ß donde los
coeficientes .ß +ß , y - son ingresados por el usuario, usando el siguiente
esquema de trabajo:
Para la ecuación cúbica B$  + B#  , B  - œ ! (si el coeficiente que
acompaña a B$ no es ", entonces divida la ecuación por tal coeficiente),
con +ß ,ß - − ‘ß primero calcule
#
U ´ + $,
*
$
V ´ #+ *+,#(&%
Si V #  U$ ß entonces la ecuación posee tres raíces realesß las cuales son:
B" œ  # ÈU -9=Ð )$ Ñ  +$
B# œ  # ÈU -9=Ð )#1 Ñ  +
1
+
B$ œ  # ÈU -9=Ð )#
$ Ñ $
$
$
donde
) œ E<--9=Œ ÈV $ .
U
Si V # € U$ ß entonces las tres raíces son:
B" œ ÐE  FÑ  +$
È$
B# œ  "# ÐE  FÑ  +$  3 # ÐE  FÑ
È$
B$ œ  "# ÐE  FÑ  +$  3 # ÐE  FÑ
donde
E œ  =3189ÐVÑ ’¸V ¸  ÈV #  U$ “
"Î$
1
Fœœ
UÎE ß =3 E Á !
! ß =3 E œ !
=3189ÐVÑ œ œ
"
"
ß =3 V € !
ß =3 V  !
Además, guarde en un archivo externo RAICES.DOC los coeficientes y las
soluciones de la ecuación cúbica.
Incluya funciones ArcCos y Signo apropiadas. (Obs.: Pascal posee la función
Arcotangente).
(30 puntos)
Solución:
Program ExamenLenguajeProgramacionProb1_12006;
uses Crt;
var
d, a, b, c
: real;
Q, R, R2, Q3 : real;
a3, m2Q : real;
angulo
: real;
x1, x2, x3 : real;
x2Re, x2Im, x3Re, x3Im
: real;
UnTercio
: real;
Am, Bm
:real;
AmasB, AmenosB
: real;
r32
: real;
arch : Text;
Function Potencia(Base, Exponente: real):real;
begin
Potencia:=Exp(Exponente*ln(Base));
end;
Function ArcCos(x:real):real;
begin
if x=1.0 then ArcCos:=0.0
else if x=-1.0 then
ArcCos:=Pi
else
ArcCos:=Pi/2-ArcTan(x/sqrt(1.0-sqr(x)));
end;
Function Signo(x:real):ShortInt;
begin
if x>=0 then Signo:=+1 else Signo:=-1;
end;
Begin
ClrScr;
2
write('Ingrese
readln(d);
write('Ingrese
readln(a);
write('Ingrese
readln(b);
write('Ingrese
readln(c);
d = ');
a = ');
b = ');
c = ');
Assign(arch,'RAICES.DOC');
Rewrite(arch);
Writeln(arch,'d = ',d:0:2);
Writeln(arch,'a = ',a:0:2);
Writeln(arch,'b = ',b:0:2);
Writeln(arch,'c = ',c:0:2);
if d<>0 then
begin
if d<>1.0 then
begin
a:=a/d; b:=b/d; c:=c/d;
end;
Q:=(sqr(a)-3*b)/9; R:=(2*sqr(a)*a-9*a*b+27*c)/54;
R2:=sqr(R); Q3:=sqr(Q)*Q;
a3:=a/3;
if R2<Q3 then
begin
angulo:=ArcCos(R/sqrt(Q3));
m2Q:=-2*sqrt(Q);
x1:=m2Q*cos(angulo/3)-a3;
x2:=m2Q*cos((angulo+2*Pi)/3)-a3;
x3:=m2Q*cos((angulo-2*Pi)/3)-a3;
TextColor(Red);
writeln('La ecuación posee tres raíces reales');
writeln('x1 = ',x1:0:5);
writeln('x2 = ',x2:0:5);
writeln('x3 = ',x3:0:5);
writeln(arch,'La ecuación posee tres raíces reales');
writeln(arch,'x1 = ',x1:0:5);
writeln(arch,'x2 = ',x2:0:5);
writeln(arch,'x3 = ',x3:0:5);
end
else
begin
UnTercio:=1/3;
Am:=-Signo(R)*Potencia((Abs(R)+sqrt(R2-Q3)),UnTercio);
if Am=0 then Bm:=0 else Bm:=Q/Am;
AmasB:=Am+Bm; AmenosB:=Am-Bm;
r32:=sqrt(3)/2;
3
x1:=AmasB-a3;
x2Re:=-0.5*AmasB-a3;
x2Im:=r32*AmenosB;
x3Re:=x2Re;
x3Im:=-x2Im;
TextColor(Cyan);
writeln('La ecuación posee una raíz real y dos complejas
conjugadas');
writeln('x1 = ',x1:0:5);
writeln(arch,'La ecuación posee una raíz real y dos
complejas conjugadas');
writeln(arch,'x1 = ',x1:0:5);
if x2Im<0 then
begin
writeln('x2 = ',x2Re:0:3,' - ',-x2Im:0:3,' i ');
writeln('x3 = ',x3Re:0:3,' + ',x3Im:0:3,' i ');
writeln(arch,'x2 = ',x2Re:0:3,' - ',-x2Im:0:3,' i ');
writeln(arch,'x3 = ',x3Re:0:3,' + ',x3Im:0:3,' i ');
end
else
begin
writeln('x2 = ',x2Re:0:3,' + ',x2Im:0:3,' i ');
writeln('x3 = ',x3Re:0:3,' - ',-x3Im:0:3,' i ');
writeln('x2 = ',x2Re:0:3,' + ',x2Im:0:3,' i ');
writeln('x3 = ',x3Re:0:3,' - ',-x3Im:0:3,' i ');
end;
end;
end
else
begin
writeln('La ecuación ',a:0:1,'xý + ',b:0:1,'x + ',c:0:1,'
es cuadrática');
writeln(arch,'La ecuación ',a:0:1,'xý + ',b:0:1,'x +
',c:0:1,' es cuadrática');
end;
Close(arch);
End. ú
(2) Escriba un programa en pascal que lea desde un archivo externo
CURSO.DAT el nombre de 50 alumnos junto con las notas que obtuvieron en
una prueba, y muestre por pantalla, con 1 decimal, el promedio y la
desviación estándar de ellas.
Anote el formato del archivo CURSO.DAT.
(Indicaciones:
! B3
8
Promedio œ B œ
3œ"
8
4
! ÐB3 B Ñ#
Desviación estándar œ = œ Ë 3œ" 8
8
)
(30 puntos)
Solución:
El formato del archivo CURSO.DAT es:
Juan Perez Rosales
7
Pedro Almodobar Jerez
4.6
Antonio de la Maza Pedreros
6.5
.
.
.
.
Program ExamenLenguajeProgramacionProb2_12006;
Uses Crt;
Const
NroAlumnos=50;
Type
Vector=array[1..NroAlumnos] of real;
VectorCadena=array[1..NroAlumnos] of string[40];
Var
x : Vector;
Nombre : VectorCadena;
i : 1..NroAlumnos;
arch : Text;
suma : real;
Promedio, DesvEst : real;
Begin
ClrScr;
Assign(arch,'CURSO.DAT');
Reset(arch);
for i:=1 to NroAlumnos do
begin
Readln(arch,Nombre[i]);
Readln(arch,x[i]);
end;
Close(arch);
suma:=0;
for i:=1 to NroAlumnos do
suma:=suma+x[i];
5
Promedio:=suma/NroAlumnos;
suma:=0;
for i:=1 to NroAlumnos do
suma:=suma+sqr(x[i]-Promedio);
DesvEst:=sqrt(suma/NroAlumnos);
Writeln('Promedio = ',Promedio:0:1);
Writeln('Desviación estándar = ',DesvEst:0:1);
End.
6
Descargar