fundamentos de informática

Anuncio
ESCUELA TÉCNICA SUPERIOR DE
INGENIERÍA INDUSTRIAL
FUNDAMENTOS DE INFORMÁTICA
PARCIAL (FEBRERO 2010)
PROBLEMAS
(5 puntos )
Apellidos y Nombre:
DNI:
Grupo:
La teoría de los dos universos (una teoría nunca formulada realmente, pues no tiene ni pies ni cabeza)
predice la existencia de dos universos: el nuestro, y el de al lado.
Según dicha teoría, en el universo de al lado, todo cuerpo está formado o viene determinado por una
secuencia no vacía de partículas elementales, las cuales pueden ser sólo de uno de los 5 tipos siguientes:
A, B, C, D, E. El peso de cada partícula es: A=10, B=20, C=30, D=40, E=50.
A su vez, todo cuerpo se ve afectado por tres tipos de fuerzas: la fuerza individual, la fuerza del entorno,
y la fuerza oscura.
a) La fuerza individual de un cuerpo X, o findx, es propia de dicho cuerpo, y su valor es la raíz
cuadrada del producto de su masa (mx) por su peso (px):
find x = mx ⋅ p x
donde, px se calcula sumando los pesos de las partículas que integran la secuencia que define a
dicho cuerpo.
De esta forma, si un cuerpo X está formado por la secuencia de partículas ABADEA, entonces px
sería 10+20+10+40+50+10 = 140; si está formado sólo por la partícula C, entonces px sería 30; y
para la secuencia: BAD, px sería 20+10+40 = 70.
b) La fuerza del entorno de un cuerpo X, o fentx, es aquella que se debe tanto al propio cuerpo como a
su entorno, y su valor se obtiene con la siguiente expresión:
fent x = (V + W ) / find x
cant
V = 2 ⋅ ∑ (mi )
i =1
⎛ 30
W = ∑ ⎜⎜ i ⋅ ∑ i +
i =10 ⎝
j =i +13
20
⎞
j ⎟⎟
⎠
donde: cant es la cantidad de cuerpos existentes a menos de 1 metro del cuerpo X en estudio,
mi es la masa del cuerpo i-ésimo (de los cant existentes),
y findx es la fuerza individual del cuerpo X
c) Por último, la fuerza oscura, o foscx,y, es aquella que ejerce un cuerpo X sobre otro cuerpo Y
situado a más de 1 metro de distancia de X, pero a menos de 10000, calculándose según la siguiente
expresión (su valor será nulo si la distancia no está dentro de dicho rango):
fosc x , y = p x ⋅ Z ⋅ d x , y
donde, si:
1 < dx,y ≤ 10
si: 10 < dx,y ≤ 100
si: 100 < dx,y ≤ 1000
si: 1000 < dx,y ≤ 10000
⋅ d x, y
→
Z=V
→
→
→
Z=V+W
Z = V2 + W
Z = W3
siendo: dx,y la distancia, en metros, entre el cuerpo X y el cuerpo Y
y: V, W son los valores de V y W usados para calcular fentx
Se pide:
1) (1p) Definir una función, llamada fuerza_individual(), que recibiendo como parámetro de
entrada la masa de un cuerpo X (mx), devuelva, como parámetro de salida, su peso (px), y como
valor de retorno, el valor de su fuerza individual (findx). Para ello, deberá leer por teclado la
secuencia de partículas que lo forman (suponer que siempre se introducirá una secuencia correcta,
no vacía, y terminada con el carácter ‘\n’).
2) (2p) Definir una función, llamada fuerza_entorno(), que recibiendo como parámetros de
entrada el valor de la fuerza individual de un cuerpo X concreto (findx), y el valor de cant (cantidad
de cuerpos existentes a menos de 1 metro del cuerpo X), devuelva, como valor de retorno la fuerza
del entorno de dicho cuerpo (fentx), y como parámetros de salida, los valores de V y W
correspondientes a dicho cuerpo. Como lo necesita, esta función deberá leer por teclado los cant
valores correspondientes a las masas de los cuerpos existentes en dicho entorno, es decir, los
distintos valores de mi.
3) (1p) Definir otra función, llamada fuerza_oscura(), que devuelva el valor de la fuerza oscura
que ejerce un cuerpo X sobre otro cuerpo Y (foscx,y), recibiendo como parámetros de entrada los
valores px, dx,y, y los de V y W usados para calcular la fentx del cuerpo X.
4) (1p) Completar el programa con la función main(), cuyo objetivo será, haciendo uso de las
funciones anteriores, escribir en pantalla el valor de la fuerza individual y el de la fuerza del entorno
de un cuerpo X concreto, así como el valor de la fuerza oscura que ejerce dicho cuerpo X sobre otro
cuerpo Y. Para ello, deberá leer por teclado los datos adecuados y necesarios.
/* UNA POSIBLE SOLUCION AL EXAMEN PARCIAL DE FEBRERO DE 2010
DE FUNDAMENTOS DE INFORMATICA */
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<ctype.h>
//para
//para
//para
//para
las funciones printf () y scanf()
la funcion getch()
la funcion sqrt()
la funcion toupper()
unsigned peso_particula(char particula)
{
return (particula-'A'+1)*10;
}
float fuerza_individual(float mx, float &px)
{
char particula;
px=0;
printf("\nIntroduce secuencia de las particulas que forman el cuerpo X: ");
scanf(" %c",&particula);
while(particula!='\n')
{
particula=toupper(particula); //se asegura que la letra sea mayuscula
px += peso_particula(particula);
scanf("%c",&particula);
}
return sqrt(mx*px);
}
float fuerza_entorno(float findx, unsigned cant, float &V, float &W)
{
unsigned i,j;
float sum1, sum2;
float mi, masatotal=0.0;
printf("\nLectura de las masas de los %u cuerpos a menos de un metro de X\n",cant);
for(i=1;i<=cant;i++)
{
printf("Introduce la masa del cuerpo %u:",i);
scanf("%u",&mi);
masatotal += mi;
}
V = 2*masatotal;
sum1=0.0;
for(i=10;i<=20;i++)
{
sum2=0.0;
for(j=i+13;j<=30;j++)
sum2 += sqrt(i+j);
sum1 += i*sum2;
}
W = sum1;
return (V+W)/findx;
}
float fuerza_oscura(float px, float dxy, float V, float W)
{
float Z;
if (1<dxy && dxy<=10 )
Z = V*sqrt(dxy);
else if (10<dxy && dxy<=100 )
Z = V + W;
else if (100<dxy && dxy<=1000 )
Z = V*V + W;
else if (1000<dxy && dxy<=10000 )
Z = W*W*W;
else
Z = 0;
return px*Z*dxy;
}
int main()
{
float findx, fentx, foscxy, mx, px, V, W, dxy;
unsigned cant;
printf("\nIntroduce la masa del cuerpo X: ");
scanf("%f",&mx);
findx=fuerza_individual(mx,px);
printf("\nLa fuerza individual del cuerpo X es de %.2f",findx);
printf("\n\nCuantos cuerpos hay a menos de un metro de X?: ");
scanf("%u",&cant);
fentx=fuerza_entorno(findx, cant, V, W);
printf("\nLa fuerza del entorno del cuerpo X es de %.2f",fentx);
printf("\n\nA que distancia del cuerpo X esta el cuerpo Y?: ");
scanf("%f",&dxy);
foscxy=fuerza_oscura(px,dxy,V,W);
printf("\nLa fuerza oscura que ejerce X sobre Y es de %.2f",foscxy);
getch();
return 0;
}
Descargar