IWI-131 PROGRAMACION DE COMPUTADORES
UTFSM – Campus Santiago
1. Uso de While y Do-While: Codificar un programa para calcular la
serie de Fibonacci dada por:
Fi = Fi-1 + Fi-2
Para n números con n > 2. Se debe imprimir no más de 10 números
por línea.
1
IWI-131 PROGRAMACION DE COMPUTADORES
UTFSM – Campus Santiago
public class fibonacci{
public static void main(String[] args)
{
double f1,f2,f3;
long n,cont; // n > 2
do
{
StdOut.println("Ingrese valor de n:");
n=StdIn.readLong();
} while (n<=2);
f1=1;f2=1;
cont=2;
StdOut.print(f1+",");
StdOut.print(f2+",");
while (cont < n)
{
f3=f1+f2;
StdOut.print(f3+",");
cont++;
if (cont % 10 ==0)
StdOut.println();
f1=f2;
f2=f3;
}
}
}
2
IWI-131 PROGRAMACION DE COMPUTADORES
UTFSM – Campus Santiago
2. Uso de For: Codificar un programa que calcule el ahorro
acumulado por un estudiante luego de N meses considerando que
deposita D pesos mensuales y que retira R pesos cada 3 meses. El
banco le da un interés mensual de I% y el depósito inicial es de DI
pesos.
Debe considerar las siguientes validaciones:
-N > 1
-D > 0
-R > 0
-100%>I > 0 %
-DI > 0
Considere que si el momento de girar el dinero existente en la
cuenta no alcanza para cubrir el retiro, este no se produce.
3
public class ahorro{
public static void main (String[] args)
{
Long N; // N > 1
Double D,R, I,DI; // D > 0, R > 0, 100% < I < 0%, DI > 0
Double ahorro;
do
{
StdOut.println("Ingrese N:");
N=StdIn.readLong();
StdOut.println("Ingrese Depósito:");
D=StdIn.readDouble();
StdOut.println("Ingrese Retiro:");
R=StdIn.readDouble();
StdOut.println("Ingrese interes:");
I=StdIn.readDouble();
StdOut.println("Ingrese depósito inicial:");
DI=StdIn.readDouble();
} while ((N<=1)||(D<=0)||(R<=0)||(I<=0)||(I>=100)||(DI<=0));
ahorro=DI;
for (long k=1;k<N;k++)
{
ahorro+=ahorro*I/100;
ahorro+=D;
if (k%3==0)
ahorro-=R;
};
StdOut.printf("Ahorro obtenido luego de %d años:%.1f",N,ahorro);
}
}
4
3. Ruteo: Dado el siguiente programa, indicar el valor que toma paso
a paso cada variable, tomando como entrada 37 y 12:
public class ruteo{
public static void main(String[] args)
{
int a, b, c, d, e;
StdOut.printf("ingrese numero entero:");
a=StdIn.readInt();
StdOut.printf("ingrese otro numero entero:");
b=StdIn.readInt();
c = a;
d = b;
e = 0;
while (c >= 1)
{
if (c % 2 != 0)
e +=d;
c = c / 2 - c % 2 / 2;
d = d * 2;
};
StdOut.printf("El resultado es:%d\n",e);
}
}
5
a
b
c
d
e
37
12
0
Pantalla
37
12
18
12
24
9
48
4
96
2
192
1
384
0
768
60
444
El resultado es: 444
6
IWI-131 PROGRAMACION DE COMPUTADORES
UTFSM – Campus Santiago
4. Cambio de estructura
En el programa que se da a continuación, efectué los cambios de
estructura que se solicitan, sin cambiar la actual lógica.
7
Public Class transforma{
Public static void main(String[ ] Args){
int n,m,h,p,x,y,j,i;
do
//cambiar por WHILE
{
StdOut.printf("Ingrese un Numero entero"); n=StdIn.readInt();
}
while (n<1||n>3);
if(n==1)
//cambiar por Switch
{
do
{
printf("Ingrese un Numero entero"); m=StdIn.readInt();
}while(m<1);
x=0;
for (i=1;i<=m;i++) x+=i;
//cambiar por WHILE
StdOut.printf("%d",x);
}
else
{
if (n==2)
{
do
{ StdOut.printf("Ingrese un Numero entero"); h=StdIn.readInt(); }while(h<1);
y=1; j=h;
while (j>=1) { y*=j; j--;};
//cambiar por DO-WHILE
StdOut.printf("%d",y);
}
else
{
if(n==3)
{
do {StdOut.printf("Ingrese un Numero entero"); p=StdIn.readInt(); }while (p<1);
switch(p%2==0)
//cambiar por if
{
case 0:StdOut.printf("El numero es par\n");break;
case 1:StdOut.printf("El numero es impar\n");break;
};
}
else StdOut.printf("Esta opción no está implementada");
};
};
} // Main
} // Class
8
public class transforma{
public static void main (String[] args)
{
int n,m,h,p,x,y,j,i;
StdOut.printf("Ingrese numero entero:");
n=StdIn.readInt();
while (n <1 || n>3)
{
StdOut.printf("Ingrese numero entero:");
n=StdIn.readInt();
}
switch (n)
{
case 1:
{
do
{
StdOut.printf("Ingrese numero entero:"); m=StdIn.readInt(); }while (m<1);
x=0;
i=1;
while (i<= m)
{x+=i;i++};
StdOut.printf("%d",x);
}
case 2:
{
do
{
StdOut.printf("Ingrese numero:"); h=StdIn.readInt(); }while (h<1);
y=1;j=h;
if (j>=1)
{
do
{
y*=j;
j--;
} while (j>=1);
}
}
case 3:
{
do
{ StdOut.printf("Ingrese numero entero:");
if (p%2==1)
StdOut.printf("El numero es par");
else
StdOut.printf("El numero es impar");
}
default: StdOut.printf("Opción no implementada");
}
}
}
p=StdIn.readInt(); } while (p<1);
9
IWI-131 PROGRAMACION DE COMPUTADORES
UTFSM – Campus Santiago
5. Comunidad Hormiguística
En una comunidad “Hormiguística”, una hormiga (macho) se desplaza desde el
punto A al punto B (Hormiguero), llevando paquetes de comida que va
recogiendo en el camino, bajo las siguientes condiciones:
Cada 1 metro : pierde peso por transpiración igual a liquido=1e-10gr
Cada 2 metros: recoge 1 paquete que pesa paquete=1e-6 gr
Cada 5 metros: bota 1 un paquete , si la cantidad de
paquetes en su lomo en ese momento es impar.
Cada 10 metros: Se detiene a comer aumentando su peso corporal debido al
alimento en: comida=1e-10 gr.
Se debe considerar que el peso máximo que soporta la hormiga sobre su lomo
es de pmax=1e-4gr, por lo que no subirá más paquetes si ya completó este
peso.
Codificar un programa Java que dada una distancia en metros entre A y B,
calcule:
-Con cuantos paquetes llega al hormiguero
-Determine si el peso de la hormiga aumenta o disminuye por los
10
efectos de la transpiración y por la comida.
public class hormiga{
public static double PMAX=1e-4;
public static double PESO_PAQUETE=1e-6;
// cada 2 metros sube uno y cada 5 baja si n° de paquetes es impar
public static double COMIDA=1e-8;
// cada 10 metros
public static double TRANSPIRA=1e-10;
//cada 1 metro
public static void main(String[] args)
{
long n;
double paquetes,peso;
do
{
StdOut.println("Ingrese N:");
n=StdIn.readLong();
} while (n < 2);
peso=0;
paquetes=0;
for (int i=1;i<n;i++)
{
peso-=TRANSPIRA;
if ((i%2==0) && (peso<PMAX))
{
paquetes++;
peso+=PESO_PAQUETE;
}
if ((i%5==0) && (i%2!=0))
{
paquetes--;
peso-=PESO_PAQUETE;
}
if (i%10==0)
peso+=COMIDA;
}
StdOut.println("Paquetes:"+paquetes);
if (peso==0)
StdOut.println("Peso no varió");
else
if (peso<0)
StdOut.println("Perdió peso");
else
StdOut.println("Aumentó de peso");
}
}
11
6. Ruteo: Dado el siguiente programa, indicar el valor que toma paso a paso cada variable
.
public class Enredo {
public static void main(String[] args)
{
int a,b,c, suma, j, i;
a=1;
b=2;
c=3;
suma = a+b+c;
for (i=0; i<=suma; i++)
{
suma = suma + (a*b*c);
b=a;
c=b--;
a=--c;
if ((a*b*c) == 0)
{
StdOut.println("El estado actual es " + a + " ** " + b + " ** " + c + " ** " + suma);
}
j=0;
while (j <= i)
{
if ((j % 2) == 0)
{ StdOut.println("Encontre un par " + j); }
j = j+1;
}//while
}//for
}//main
}//class
12
a
b
c
suma
1
2
3
6
0
0
0
j
i
0
Estado Actual 0**0**0**12
0
-1
0
0
-1
-1
Pantalla
12
1
Encontré un par 0
1
0
Encontré un par 0
1
-2
-1
-1
-2
-2
11
2
2
0
Encontré un par 0
1
2
-3
-2
-2
-3
-3
3
3
0
Encontré un par 2
3
Encontré un par 0
1
2
Encontré un par 2
3
13
Descargar

IWI-131 PROGRAMACION DE COMPUTADORES