PDF de programación - PROBLEMAS RESUELTOS. Correspondientes a los temas 2 al 5

Imágen de pdf PROBLEMAS RESUELTOS. Correspondientes a los temas 2 al 5

PROBLEMAS RESUELTOS. Correspondientes a los temas 2 al 5gráfica de visualizaciones

Actualizado el 24 de Noviembre del 2018 (Publicado el 25 de Enero del 2017)
1.290 visualizaciones desde el 25 de Enero del 2017
130,1 KB
26 paginas
Creado hace 22a (21/12/2001)
PROGRAMACI ÓN

Escuela de Informática. UPV. Curso 2001/2002

PROBLEMAS RESUELTOS.
Correspondientes a los temas 2 al 5

Francisco Marqués y Natividad Prieto

Índice General

1 Introducción

2 Tema 2. CONCEPTOS B ÁSICOS

3 Tema 3. CONDICIONES Y ELECCI ÓN

4 Tema 4. LA ITERACI ÓN

5 Tema 5. VECTORES. RECORRIDO Y B ÚSQUEDA

1

Introducción

1

1

8

14

20

Se muestra continuación la resolución de los problemas más significativos que aparecen
en los apuntes de la asignatura.

Como no se presenta la resolución de todos los problemas propuestos originalmente
(aunque si de la mayoría de los mismos), conviene indicar que no siempre coincide la
numeración seguida para los problemas a lo largo de esta resolución con la utilizada
originalmente cuando se proponían en los apuntes de cada tema. Se ha respetado, sin
embargo, el orden correlativo de presentación de los mismos.

2 Tema 2. CONCEPTOS B ÁSICOS

Problemas resueltos:

1. Escribir un programa en Java que pregunte un nombre, dirección y teléfono y es-

criba en pantalla una ficha con dicha información

El programa define como variables de tipo cadena de caracteres nombre,apellidos,
direccion y telefono. Estos datos se leen del teclado, para ello se define la
variable entrada de tipo input y se utiliza la operación readline.

1

2 TEMA 2. CONCEPTOS B ÁSICOS

2

Después se presenta en pantalla la información en forma de ficha, para ello se
utilizan las primitivas write y writeln asociadas a la variable salida de tipo
output. Finalmente se cierran los ficheros entrada y salida.
El programa completo sería:

import nsIO.*;
class Ficha {

public static void main (String param[]) {

String nombre, apellidos, direccion, telefono;

input entrada = new input();
output salida = new output();

salida.write(‘‘Nombre:’’);
nombre = entrada.readname();

salida.write(‘‘Apellidos:’’);
apellidos = entrada.readname();

salida.write(‘‘Dirección:’’);
direccion = entrada.readline();

salida.write(‘‘Teléfono:’’);
telefono = entrada.readname();

salida.writeln(‘‘*** Ficha ***’’);
salida.writeln(‘‘_____________’’);
salida.writeln(apellidos+’’, ‘‘+nombre);
salida.write(‘‘Dirección:’’+direccion+’’\t’’);
salida.writeln(‘‘Teléfono:’’+telefono);

entrada.close(); salida.close();
}

}

Un ejemplo de ejecución de este programa sería el siguiente:

[....]\$ java EscribeFicha
Nombre:Pedro
Apellidos:Martinez Ferrero
Dirección: c/ Perez Galdós, 156

2 TEMA 2. CONCEPTOS B ÁSICOS

3

Teléfono:963756823
*** Ficha ***
_____________
Martinez Ferrero, Pedro
Dirección: c/ Perez Galdós, 156 Teléfono:963756823

2. Escribir un programa en Java que transforme una temperatura dada en grados

Fahrenheit a grados Celsius, siendo 1oC=33.8oF.

El programa define como variable de entrada tempC y como variable resultado o
de salida tempF, ambas de tipo real double. El dato, tempF, se lee del teclado,
para ello se define la variable entrada de tipo input y se utiliza la operación
readdouble. A continuación se realizan los cálculos para obtener el valor de la
temperatura en grados Fahrenheit:

oF =

oC ∗ 9

5

+ 32

Posteriormente se presenta en pantalla el resultado obtenido, para ello se utilizan
la primitiva writeln asociada a la variable salida de tipo output. Finalmente se
cierran los ficheros entrada y salida.
El programa completo sería:

import nsIO.*;
class Temperatura {

public static void main (String param[]) {

double tempC, tempF;

input entrada = new input();
output salida = new output();

salida.write(‘‘Temperatura en oC:’’);
tempC = entrada.readdouble();

tempF = tempC*9/5+32;

salida.writeln(‘‘Temperatura en oF=’’+ tempF);

entrada.close(); salida.close();
}

}

2 TEMA 2. CONCEPTOS B ÁSICOS

4

Un ejemplo de ejecución de este programa sería el siguiente:

[....]\$ java Temperatura
Temperatura en oC:100.0
Temperatura en oF=2012.0
[....]\$ java Temperatura
Temperatura en oC:0.0
Temperatura en oF=32.0

3. Escribir un programa en Java para calcular la superficie y el volumen de una esfera

a partir del valor del radio (supóngase que es un valor positivo)

El programa define como variable de entrada radio y como variables resultado o
de salida superficie y volumen, todas ellas de tipo real, double. El dato, radio,
se lee del teclado, para ello se define la variable entrada de tipo input y se utiliza
la operación readdouble. A continuación se realizan los cálculos para obtener la
superficie y el volumen de la esfera:

superf icie = 4 ∗ π ∗ radio2

volumen =

4
3

∗ π ∗ radio3 = superf icie ∗ radio

3

Después se presentan en pantalla los resultados obtenidos, para ello se utilizan la
primitiva writeln asociada a la variable salida de tipo output. Finalmente se
cierran los ficheros entrada y salida.
El programa completo quedaría:

import nsIO.*;
class Esfera_1 {

public static void main (String param[]) throws Exception {
double radio;
double superficie, volumen;

input entrada = new input();
output salida = new output();

salida.writeln(‘‘Cálculo de la superficie y volumen de una esfera’’);

salida.write(‘‘Escribe el radio (real positivo):’’);

2 TEMA 2. CONCEPTOS B ÁSICOS

5

radio = entrada.readouble();

superficie = 4.0*Math.PI*radio*radio;
volumen = superficie*radio/3.0;

salida.writeln(‘‘Superficie=’’+superficie);
salida.writeln(‘‘Volumen=’’+volumen);

entrada.close(); salida.close();
}

}

4. Una empresa de transporte por carretera ha adquirido vehículos nuevos que viajan
más rápido que los antiguos. La empresa desearía conocer cómo afectará ésto a
la duración de los viajes. Supóngase que la reducción media que se consigue del
tiempo total de viaje es del 15%. Escribid un programa en Java que lea el horario
de salida y llegada antiguo, calcule el nuevo horario de llegada y muestre en pan-
talla el nuevo tiempo de viaje y la nueva hora de llegada.

Los datos del problema planteado son:

• hora de salida
• hora de llegada

El programa debe realizar los cálculos necesarios para presentar los siguientes
resultados:

• duración del viaje
• hora de llegada

En primer lugar se plantea la cuestión de cómo representar los datos de entrada
del problema, horas de salida y llegada. Éstas se pueden representar como enteros,
por ejemplo:

hora
representación

9
900

9:30
930

10:15
1015

11:45
1145

20:10
2010

23:50
2350

Para resolver el problema planteado se deben de seguir los siguientes pasos:

(a) Leer los datos de entrada
(b) Calcular el tiempo de viaje
(c) Calcular el nuevo tiempo de viaje con la reducción del 15%

2 TEMA 2. CONCEPTOS B ÁSICOS

6

(d) Obtener el nuevo tiempo de llegada

Para realizar los cálculos de tiempos de viaje, resulta cómodo pasar los tiempos a
minutos; si hhmm es el tiempo en horas (hh) y minutos (mm), por ejemplo 1015
para representar las 10:15, se calcularán los minutos mediante:

minutos = hhmm ∗ 60

100

+ hhmm%100

El proceso inverso para calcular el tiempo en horas y minutos será:

hh = minutos/60; mm = minutos%60;

Con todo ello, el método de resolución del problema sería el siguiente:

(a) Leer los datos de entrada, salida y llegada
(b) Calcular el tiempo de viaje

• Pasamos las horas de salida y llegada a minutos
• El tiempo de viaje es la diferencia:
tiempoviaje = ( llegada ∗ 60

+hhmm%100)−( salida ∗ 60

100

+hhmm%100)

100

(c) Calcular el nuevo tiempo de viaje con la reducción del 15%:

tiempoviajenuevo = tiempoviaje − 0.15 ∗ tiempoviaje = 0.85 ∗ tiempoviaje

(d) Obtener el nuevo tiempo de llegada La nueva hora de llegada se calcula su-

mando tiempoviajenuevo a la hora de salida:

llegadanueva = salida + tiempoviajenuevo

Este cálculo se realiza en minutos y ya sólo queda pasarlo a horas y minutos:

llegadanueva = (llegadanueva/60) ∗ 100 + (llegadanueva%60)

El programa sería el siguiente:

import nsIO.*;
class Trayectos {

public static void main (String param[]) {

input entrada = new input();
output salida = new output();

int hllegada, hsalida;

2 TEMA 2. CONCEPTOS B ÁSICOS

7

int tpoviajeNuevo, llegadaNueva;

salida.write("Hora de salida:");
hsalida = entrada.readint();
salida.write("Hora de llegada:");
hllegada = entrada.readint();

int salidaMin =(hsalida/100)*60 + (hsalida\%100);
int llegadaMin =(hllegada/100)*60 +(hllegada\%100);
int tpoviaje

=llegadaMin - salidaMin;

tpoviajeNuevo = (tpoviaje * 85)/100;

int llegadaNuevaMin = salidaMin + tpoviajeNuevo;

llegadaNueva=100*(llegadaNuevaMin/60)+(llegadaNuevaMin\%60);

salida.writeln("Nueva Hora de llegada:"+llegadaNueva);
salida.writeln("Duración del viaje:"+tpoviajeNuevo+" minutos");

salida.close(); entrada.close();

}

}

La compilación y un ejemplo de ejecución del programa sería:

[....]$ javac Trayectos.java
[....]$ java Trayectos
Hora de salida:900
Hora de llegada:1015
Nueva Hora de llegada:1003
Duración del viaje:63 minutos

3 TEMA 3. CONDICIONES Y ELECCI ÓN

8

3 Tema 3. CONDICIONES Y ELECCI ÓN

Problemas resueltos:

1. Dados dos números enteros, num1 y num2, realizar un programa que escriba uno
de los dos mensajes: ”el producto de los dos números es positivo o nulo” o bien
”el producto de los dos números es negativo”. No hay que calcular el producto.

Resolución: El problema puede resolverse directamente en Java, utilizando las
operaciones predefinidas de entrada/salida, del modo siguiente:

import nsIO.*;
class neg_pos {

public static void main(String args[]) {

input fent = new input();
output fsal = new output();

//pedir los dos numeros
fsal.writeln("Introduce los dos numeros: ");

int num1 = fent.readint();
int num2 = fent.readint();

//decidimos como es
if (num1==0 || num2==0 || (num1>0 && num2>0) || (num1<0 && num2<0))

fsal.writeln("el producto de los dos numeros es positivo o nulo");

else fsal.writeln("el producto de los dos numeros es negativo");

}

}

Es posible modificar la expresión condicional utilizando cualquiera de las siguientes
(entre otras):

.....

if ((num1<0 && num2>0) || (num1>0 && num2<0))

fsal.writeln("el producto de los dos numeros es negativo");

else fsal.writeln ("el producto de los
  • Links de descarga
http://lwp-l.com/pdf2124

Comentarios de: PROBLEMAS RESUELTOS. Correspondientes a los temas 2 al 5 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad