Trabajo Práctico N° 1

Técnicas de Programación. <codo a codo/>


Alumno: Roldán G. Matías A.

Turno: Lunes y Miércoles 19.00hs

Sede: CFP N°11 (Gral. Paz y Emilio Castro)







1.1. Diagrama de flujo (en Pencil):



1.2. Pseudocódigo:

INICIO SalarioSemanal
// Constantes y variables
ENTERO maxHs,pagoxHora,pagoxHExtra,hsTrabajadas,sueldo;
maxHs = 40;
pagoxHora = 16;
pagoxHExtra = 20;
hsTrabajadas = 0;
sueldo = 0;

Escribir "Ingrese las horas trabajadas durante la semana:";
Leer hsTrabajadas;
Si (hsTrabajadas <= maxHs) Entonces
sueldo = hsTrabajadas*pagoxHora;
Sino
sueldo = (hsTrabajadas-maxHs)*pagoxHExtra+maxHs*pagoxHora;
FinSi

Imprimir "El salario total será de $",sueldo;
FIN



1.3. Código en JAVA:

package salariosemanal;
import java.util.Scanner;
/* @author zeintger */

public class SalarioSemanal {
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);

int maxHs = 40;
int pagoxHora = 16;
int pagoxHExtra = 20;
int hsTrabajadas = 0;
int sueldo = 0;

System.out.println("Ingrese las horas trabajadas durante la semana:");
hsTrabajadas = teclado.nextInt();

if (hsTrabajadas <= maxHs) {
sueldo = hsTrabajadas*pagoxHora;
} else {
sueldo = (hsTrabajadas-maxHs)*pagoxHExtra+maxHs*pagoxHora;
}
System.out.println("El salario total será de $"+sueldo);
}
}






2.1. Diagrama de flujo (draw.io):



2.2. Pseudocódigo:

INICIO Compra_Empresa
// Constantes y variables
ENTEROS maxCompra;
REALES compraTotal, financiacionBnco, pagoEmpresa, credFabri, interesFabri;

maxCompra = 500000;
compraTotal = 0;
financiacionBnco = 0;
pagoEmpresa = 0;
credFabri = 0;
interesFabri = 0;

Imprimir "Ingrese el monto total de la compra";
Leer compraTotal;

pagoEmpresa = compraTotal*0.7;
credFabri = compraTotal*0.3;

Si (compraTotal>maxCompra) Entonces
pagoEmpresa = compraTotal*0.55;
financiacionBnco = credFabri;
credFabri = compraTotal*0.15;
FinSi
interesFabri = credFabri*0.2;

Escribir "La compra se abonará con:\nEmpresa: $",pagoEmpresa,"\nPrestamo Banco:
$"
,financiacionBnco,"\nCrédito del proveedor: $",credFabri,"\nInterés del proveedor:
$"
,interesFabri,"\nMonto total: $",compraTotal+interesFabri;
FIN



2.3. Código en JAVA:

package compra_empresa;
import java.util.Scanner;
/* @author zeintger */

public class Compra_Empresa {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int maxCompra = 500000;
float compraTotal, financiacionBnco, pagoEmpresa, credFabri, interesFabri;

compraTotal = 0;
financiacionBnco = 0;
pagoEmpresa = 0;
credFabri = 0;
interesFabri = 0;

System.out.println("Ingrese el monto total de la compra");
compraTotal = teclado.nextInt();

pagoEmpresa = (float) (compraTotal*0.7);
credFabri = (float) (compraTotal*0.3);

if (compraTotal>maxCompra) {
pagoEmpresa = (float) (compraTotal*0.55);
financiacionBnco = credFabri;
credFabri = (float) (compraTotal*0.15);
}
interesFabri = (float) (credFabri*0.2);

System.out.println("La compra se abonará con:\nEmpresa: $" + pagoEmpresa +
"\nPrestamo Banco: $" + financiacionBnco + "\nCrédito del proveedor: $" + credFabri
+ "\nInterés del proveedor: $" + interesFabri + "\n Monto total: $" +
(compraTotal+interesFabri));
}
}






3.1. Diagrama de flujo (AutoCAD):

*La variable jubilacion debería ser inicializada como string



3.2. Pseudocódigo:

INICIO Clasificación_Jubilados
// Constantes y Variables
ENTEROS limiteEdad, limiteEmpleo, edadPersona, aniosEmpleo;
CADENA jubilacion,noCalifica;

limiteEdad = 60;
limiteEmpleo = 25;

Escribir "Ingresar edad";
Leer edadPersona;

Escribir "Ingresar años de trabajo";
Leer aniosEmpleo;

noCalifica = "";

Si (edadPersona>=limiteEdad) Entonces
Si (aniosEmpleo<limiteEmpleo) Entonces
jubilacion = " por edad";
Sino
jubilacion = " por antigüedad adulta";
FinSi
Sino
Si (aniosEmpleo>=limiteEmpleo) Entonces
jubilacion = " por antigüedad joven";
Sino
noCalifica = " no";
FinSi
FinSi

Escribir "Según los datos ingresados la persona",noCalifica," califica para una
jubilación"
,jubilacion;
FIN



3.3. Código en JAVA:

package clasificacion_jubilaciones;
import java.util.Scanner;
/* @author zeintger */

public class Clasificacion_Jubilaciones {

public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);

String jubilacion = null;
String noCalifica = "";
int edadPersona, aniosEmpleo;
int limiteEdad = 60;
int limiteEmpleo = 25;

System.out.println("Ingresar edad");
edadPersona = teclado.nextInt();

System.out.println("Ingresar años de trabajo");
aniosEmpleo = teclado.nextInt();

if (edadPersona>=limiteEdad) {
if (aniosEmpleo<limiteEmpleo) {
jubilacion = " por edad";
} else {
jubilacion = " por antigüedad adulta";
}
} else {
if (aniosEmpleo>=limiteEmpleo) {
jubilacion = " por antigüedad joven";
} else {
noCalifica = " no";
}
}

System.out.println("Según los datos ingresados la persona" + noCalifica + "
califica para una jubilación"
+ jubilacion);
}
}






4.1. Diagrama de flujo (PSeInt):



4.2. Pseudocódigo:

INICIO Numero_primo
ENTERO num = 0;
STRING primo = "es primo.";

Mientras (num<1 O num>5) Hacer
Escribir "Ingrese un número del 1 al 5";
Leer num;
FinMientras

Segun (num) Hacer
2:
3:
5:
De Otro Modo:
primo = "no es primo.";
FinSegun

Escribir "El número ingresado (",num,") ",primo;
FIN



4.3. Código en JAVA:

package numeroprimo.pkg4;
import java.util.Scanner;
/* @author zeintger */

public class NumeroPrimo4 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int num = 0;
String primo = "es primo.";

while (num<1 || num>5) {
System.out.println("Ingrese un número del 1 al 5");
num = teclado.nextInt();
}

switch (num){
case 2:
case 3:
case 5:
break;
default:
primo = "no es primo.";
}
System.out.println("El número ingresado ("+num+") " + primo);
}
}






5.1. Diagrama de flujo (LucidChart):



5.2. Pseudocódigo:

INICIO Par_Impar
ENTEROS num;
STRING tipo;

Escribir "Ingrese un número";
Leer num;
Si (num MOD 2=0) Entonces
tipo = "par.";
Sino
tipo = "impar.";
FinSi
Escribir "El número ingresado es ",tipo;
FIN



5.3. Código en JAVA:

package parimpar_5;
import java.util.Scanner;
/* @author zeintger */

public class ParImpar_5 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int num;
String tipo;

System.out.println("Ingrese un número");
num = teclado.nextInt();

if (num % 2 == 0) {
tipo = "par.";
} else {
tipo = "impar.";
}
System.out.println("El número ingresado es "+tipo);
}
}






6.1. Diagrama de flujo (Cacoo):



6.2. Pseudocódigo:

INICIO Dia_Semana
ENTERO numDia = 0;

Mientras (numDia<1 || numDia>7) Hacer
Escribir "Ingrese el número del día de la semana que desea saber (1-7)";
Leer numDia;
Si (numDia<1 || numDia>7) Entonces
//Error
Escribir "El número ingresado está fuera de rango."
FinSi
FinMientras

Escribir "El número ingresado corresponde al día ";
Segun (numDia) Hacer
1:
Escribir "Domingo.";
2:
Escribir "Lunes.";
3:
Escribir "Martes.";
4:
Escribir "Miércoles.";
5:
Escribir "Jueves.";
6:
Escribir "Viernes.";
De Otro Modo:
Escribir "Sábado.";
FinSegun
FIN



6.3. Código en JAVA:

package diasemana_6;
import java.util.Scanner;
/* @author zeintger */

public class DiaSemana_6 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int numDia = 0;

while (numDia<1 || numDia>7) {
System.out.println("Ingrese el número del día de la semana que desea saber
(1-7)"
);
numDia = teclado.nextInt();

if (numDia<1 || numDia>7) {
System.err.println("El número ingresado está fuera de rango.");
}
}
System.out.print("El número ingresado corresponde al día ");
switch (numDia){
case 1:
System.out.println("Domingo.");
break;
case 2:
System.out.println("Lunes.");
break;
case 3:
System.out.println("Martes.");
break;
case 4:
System.out.println("Miércoles.");
break;
case 5:
System.out.println("Jueves.");
break;
case 6:
System.out.println("Viernes.");
break;
default:
System.out.println("Sábados.");
break;
}
}
}






7.1. Diagrama de flujo (SmartDraw):

*En el switch donde dice "Según (numDia)" debería decir "Según (numMes)"



7.2. Pseudocódigo:

INICIO Mes
ENTERO numMes = 0;

Mientras (numMes<1 || numMes>12)Hacer
Escribir "Ingrese el número del mes que desea saber (1-12)";
Leer numMes;
Si (numMes<1 || numMes>12)Entonces
//Error
Escribir "El número ingresado está fuera de rango.";
FinSi
FinMientras

Escribir "El número ingresado corresponde al mes " Sin Saltar;
Segun (numMes) Hacer
1:
Escribir "Enero.";
2:
Escribir "Febrero.";
3:
Escribir "Marzo.";
4:
Escribir "Abril.";
5:
Escribir "Mayo.";
6:
Escribir "Junio.";
7:
Escribir "Julio.";
8:
Escribir "Agosto.";
9:
Escribir "Septiembre.";
10:
Escribir "Octubre.";
11:
Escribir "Noviembre.";
De Otro Modo:
Escribir "Diciembre.";
FinSegun
FIN



7.3. Código en JAVA:

package mes_7;
import java.util.Scanner;
/* @author zeintger */

public class Mes_7 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int numMes = 0;

while (numMes<1 || numMes>12) {
System.out.println("Ingrese el número del mes que desea saber (1-12)");
numMes = teclado.nextInt();
if (numMes<1 || numMes>12) {
System.err.println("El número ingresado está fuera de rango.");
}
}
System.out.print("El número ingresado corresponde al mes ");
switch (numMes){
case 1:
System.out.println("Enero.");
break;
case 2:
System.out.println("Febrero.");
break;
case 3:
System.out.println("Marzo.");
break;
case 4:
System.out.println("Abril.");
break;
case 5:
System.out.println("Mayo.");
break;
case 6:
System.out.println("Junio.");
break;
case 7:
System.out.println("Julio.");
break;
case 8:
System.out.println("Agosto.");
break;
case 9:
System.out.println("Septiembre.");
break;
case 10:
System.out.println("Octubre.");
break;
case 11:
System.out.println("Noviembre.");
break;
default:
System.out.println("Diciembre.");
break;
}
}
}






8.1. Diagrama de flujo (Dia):



8.2. Pseudocódigo:

INICIO Impuesto
// Constantes y Variables
SHORT limiteImporte = 15000;
FLOAT bruto, impuestoMayor, impuestoMenor, neto;
impuestoMayor = 0.16;
impuestoMenor = 0.1;
bruto = -1;

Mientras (bruto < 0) Hacer
Escribir "Ingresar importe bruto";
Leer bruto;
Si (bruto < 0)Entonces
//Error
Escribir "El monto ingresado debe ser igual o mayor a cero.";
FinSi
FinMientras

neto = bruto*(1-impuestoMayor);
Si (bruto<=limiteImporte) Entonces
neto = bruto*(1-impuestoMenor);
FinSi
Escribir "El monto bruto ingresado fue de $",bruto,". Luego de impuestos el neto será
de $"
,neto;
FIN



8.3. Código en JAVA:

package impuesto_8;
import java.util.Scanner;
/* @author zeintger */

public class Impuesto_8 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

short limiteImporte = 15000;
float bruto, neto;
float impuestoMayor = (float) .16;
float impuestoMenor = (float) .1;
bruto = -1;

while (bruto < 0) {
System.out.println("Ingresar importe bruto (si hay centavos, ingresarlos con coma
en vez de punto)"
);

bruto = teclado.nextFloat();
if (bruto < 0) {
System.err.println("El monto ingresado debe ser igual o mayor a cero.");
}
}
neto = bruto*(1-impuestoMayor);
if (bruto<=limiteImporte) {
neto = bruto*(1-impuestoMenor);
}
System.out.println("El monto bruto ingresado fue de $" + bruto + ". Luego de
impuestos el neto será de $"
+neto);
}
}






9.1. Diagrama de flujo (Pencil):



9.2. Pseudocódigo:

INICIO Sueldo_Trabajador
// Constantes y Variables
ENTERO salarioAnual = 400000;

BYTE aniosTrabajo;
ENTERO sueldo;

Escribir "Ingrese antiguedad del trabajador";
Leer aniosTrabajo;

Si (aniosTrabajo>=10)Entonces
sueldo = salarioAnual*1.1;
Sino
Si (aniosTrabajo>5)Entonces
sueldo = salarioAnual*1.07;
Sino
Si (aniosTrabajo>3)Entonces
sueldo = salarioAnual*1.05;
Sino
sueldo = salarioAnual*1.03;
FinSi
FinSi
FinSi
Escribir "El salario anual será de $" + sueldo;
FIN



9.3. Código en JAVA:

package sueldotrabajador_9;
import java.util.Scanner;
/* @author zeintger */

public class SueldoTrabajador_9 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int salarioAnual = 40000;
int sueldo;
byte aniosTrabajo;

System.out.println("Ingrese antiguedad del trabajador");
aniosTrabajo = teclado.nextByte();

if (aniosTrabajo>=10) {
sueldo = (int) (salarioAnual*1.1);
} else {
if (aniosTrabajo>5) {
sueldo = (int) (salarioAnual*1.07);
} else {
if (aniosTrabajo>3) {
sueldo = (int) (salarioAnual*1.05);
} else {
sueldo = (int) (salarioAnual*1.03);
}
}
}
System.out.println("El salario anual será de $" + sueldo);
}
}






10.1. Diagrama de flujo (Gliffy):



10.2. Pseudocódigo:

INICIO Menú_Triángulo
BYTE eleccion;
FLOAT lado, perimetro, base, otroLado;

//Ciclo Do-While
Repetir
Escribir "Elija una opción (1-3) para calcular el perímetro de un triángulo
según su tipo:\n1. Equilátero\n2. Isósceles\n3. Escaleno"
;
Leer eleccion;

Segun (eleccion) Hacer
1:
Escribir "Ingrese medida de uno de sus lados:";
Leer lado;
perimetro = lado*3;
2:
Escribir "Ingrese la medida de la base:";
Leer base;
Escribir "Ingrese uno de los lados iguales:";
Leer lado;
perimetro = base+lado*2;
3:
Escribir "Ingrese la medida de cada uno de sus lados:";
Leer lado;
Leer base;
Leer otroLado;
perimetro = lado+base+otroLado;
De Otro Modo:
//Error
Escribir "Opción no válida";
FinSegun
Mientras Que (eleccion<1 || eleccion>3);

Escribir "El perimetro del triángulo es ",perimetro;
FIN



10.3. Código en JAVA:

package menutriangulo_10;
import java.util.Scanner;
/* @author zeintger */

public class MenuTriangulo_10 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

byte eleccion;
float lado, otroLado, perimetro = 0, base;

do {
System.out.println("Elija una opción (1-3) para calcular el perímetro de un
triángulo según su tipo:\n1. Equilátero\n2. Isósceles\n3. Escaleno"
);
eleccion = teclado.nextByte();

switch (eleccion){
case 1:
System.out.println("Ingrese medida de uno de sus lados:");
lado = teclado.nextFloat();
perimetro = lado*3;
break;
case 2:
System.out.println("Ingrese la medida de la base:");
base = teclado.nextFloat();
System.out.println("Ingrese uno de los lados iguales:");
lado = teclado.nextFloat();
perimetro = base+lado*2;
break;
case 3:
System.out.println("Ingrese la medida de cada uno de sus lados:");
base = teclado.nextFloat();
lado = teclado.nextFloat();
otroLado = teclado.nextFloat();
perimetro = lado+base+otroLado;
break;
default:
System.err.println("Opción no válida");
}
} while (eleccion<1 || eleccion>3);

System.out.println("El perimetro del triángulo es "+perimetro);
}
}






11.1. Diagrama de flujo (PSeInt):



11.2. Pseudocódigo:

INICIO Digitos
ENTERO num,control,cont;

Repetir
control = 10;
cont = 1;

Escribir "Ingrese un número del 1 al 999, o 0 para finalizar:";
Leer num;
Si (num>=0 && num<=999)Entonces
Mientras (control<=num) Hacer
cont = cont+1;
control = control*10;
FinMientras
Escribir "El número ",num," tiene ",cont," digitos.";
Sino
//Error
Escribir num,"está fuera de rango.";
FinSi
Mientras Que (num<>0);
FIN



11.3. Código en JAVA:

package digitos_11;
import java.util.Scanner;
/* @author zeintger */

public class Digitos_11 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

short num = 0,control;
byte cont;

do {
control = 10;
cont = 1;

System.out.println("Ingrese un número del 1 al 999, o 0 para finalizar:");
num = teclado.nextShort();

if (num>0 && num<=999) {
while (control<=num) {
cont++;
control = (short) (control*10);
}
System.out.println("El número "+num+" tiene "+cont+" digitos.");
} else if (num<0 || num>999){
System.err.println(num+" está fuera de rango.");
}
} while (num != 0);
}
}






12.1. Diagrama de flujo (Draw.io):



12.2. Pseudocódigo:

INICIO Notas_Alumnos
ENTERO nota,contAprob = 0,contNotas = 0,notaAprobacion = 7;

Repetir
Escribir "Ingrese la nota del alumno (o 0 para finalizar):";
Leer nota;
Si (nota>0 && nota<=10) Entonces
contNotas = contNotas+1;
Si (nota>=notaAprobacion) Entonces
contAprob = contAprob+1;
FinSi
Sino
//Error
Escribir nota," está fuera de rango.";
FinSi
Hasta Que (nota=0);

Imprimir "La cantidad de notas validas ingresadas es igual a ",contNotas,". Los
alumnos que tienen una nota igual o mayor a 7 son "
,contAprob,". Los alumnos por
debajo de 7 son "
, (contNotas-contAprob);
FIN



12.3. Código en JAVA:

package notasalumnos_12;
import java.util.Scanner;
/* @author zeintger */

public class NotasAlumnos_12 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

int nota, contAprob = 0, contNotas = 0, notaAprobacion = 7;

do {
System.out.println("Ingrese la nota del alumno (o 0 para finalizar):");
nota = teclado.nextInt();
if (nota>0 && nota<=10) {
contNotas++;
if (nota>=notaAprobacion) {
contAprob++;
}
} else if(nota<0 || nota>10) {
System.err.println(nota+" está fuera de rango.");
}
} while (nota != 0);

System.out.println("La cantidad de notas validas ingresadas es igual a " +
contNotas + ". Los alumnos que tienen una nota igual o mayor a 7 son " + contAprob
+ ". Los alumnos por debajo de 7 son " + (contNotas-contAprob));
}
}






13.1. Diagrama de flujo (DIA):



13.2. Pseudocódigo:

INICIO Promedio_edades
ENTERO edad,cont = 0,sumaEdad = 0;
REAL promedio = 0;

Repetir
Escribir "Ingresar edad:";
Leer edad;
cont = cont+1;
sumaEdad = sumaEdad+edad;
promedio = sumaEdad/cont;
Mientras Que (promedio<25);

Mostrar "Luego de " + cont + " ingresos el promedio de edad fue de " + promedio + "
años (igual o mayor a 25 años)"
;
FIN



13.3. Código en JAVA:

package promedioedades_13;
import java.util.Scanner;
/* @author zeintger */

public class PromedioEdades_13 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

byte edad, cont = 0;
short sumaEdad = 0;
float promedio;

do {
System.out.println("Ingresar edad:");
edad = teclado.nextByte();
cont++;
sumaEdad += edad;

promedio = sumaEdad/cont;
} while (promedio<25);

System.out.println("Luego de " + cont + " ingresos el promedio de edad fue de " +
promedio + " años (igual o mayor a 25 años)");
}
}






14.1. Diagrama de flujo (Cacoo):




14.2. Pseudocódigo:

INICIO Numeros_Romanos
// Variables y constantes
SHORT limite = 9999, control = 10, num;
BYTE cont = 1, unidad = 0, decena = 0, centena = 0, millar = 0;
CHAR I = "I", V = "V", X = "X", L = "L", C = "C", D = "D", M = "M", VV = "v", II =
"i", XX = "x";
STRING romano, romParte;

Escribir "Ingrese un número entero positivo menor o igual a " + limite + " o ingrese
0 para finalizar"
;

Repetir
Leer num;
// Controlo que esté en rango
Si (num<=limite && num>0)Entonces
// Si está en rango, cuento los digitos
Mientras (control<=num) Hacer
control = control*10;
cont++;
FinMientras
// Separo unidad, decena, centena
Para (i = 1)Hasta (cont) Hacer
Segun (i) Hacer
1:
unidad = Pasar a BYTE (num);
2:
decena = Pasar a BYTE (num/10);
unidad = Pasar a BYTE (unidad - decena * 10);
3:
centena = Pasar a BYTE (num/100);
decena = Pasar a BYTE (decena - centena * 10);
4:
millar = Pasar a BYTE (num/1000);
centena = Pasar a BYTE (centena - millar * 10);
FinSegun
FinPara

romParte = convertirRomano(centena,C,D,M) +
convertirRomano(decena,X,L,C) +
convertirRomano(unidad,I,V,X);

romano = convertirRomano(millar,M,VV,II) + romParte;

Si (num>3999)Entonces
/* Si el número ingresado excede al 3999 la
representación de los millares usa diferentes
símbolos */


romano = convertirRomano(millar,II,VV,XX) +
romParte + "\n(los símbolos en minúsculas representan múltiplos de 1000)";
FinSi

Escribir "La traducción a números romanos de " + num + " es: " + romano;
Sino
Si (num=0)Entonces
Escribir "Fin del programa.";
Sino
Escribir "El número " + num + " está fuera de rango.";
FinSi
FinSi
Mientras Que (num<>0);
FIN

Funcion ConvertirRomano(BYTE digito, CHAR a, CHAR b, CHAR c)
STRING rom = "";

Si (digito>=4)Entonces
rom = b;
FinSi

Segun (digito) Hacer
4:
rom = a + rom;
9:
rom = a + c;
De Otro Modo:
Si (digito >= 6 && digito <=8)Entonces
digito = digito - 5;
FinSi

Si (digito != 5 && digito != 0)Entonces
Para (i = 1)Hasta (digito) Hacer
rom = rom + a;
FinPara
FinSi
FinSegun

Retornar rom;
FinFuncion



14.3. Código en JAVA:

package numerosromanos_14;
import java.util.Scanner;
/* @author zeintger */

public class NumerosRomanos_14 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

short limite = 9999, control = 10, num;
byte cont = 1, unidad = 0, decena = 0, centena = 0, millar = 0;
char I = 'I', V = 'V', X = 'X', L = 'L', C = 'C', D = 'D', M = 'M', VV = 'v',
II='i', XX='x';
String romano, romParte;

System.out.println("Ingrese un número entero positivo menor o igual a " + limite +
" o ingrese 0 para finalizar");

do {
num = teclado.nextShort();

if (num <= limite && num > 0) { // Dentro de rango.
while (control <= num) {
// Cuento los dígitos del número ingresado
control = (short) (control*10);
cont++;
}
forint i = 1; i <= cont; i++) {
// Separo en uni, dec, cent, mil
switch (i){
case 1:
unidad = (byte) num;
break;
case 2:
decena = (byte) (num/10);
unidad = (byte) (unidad-decena*10);
break;
case 3:
centena = (byte) (num/100);
decena = (byte) (decena-centena*10);
break;
case 4:
millar = (byte) (num/1000);
centena = (byte) (centena-millar*10);
break;
}
}
romParte = convertirRomano(centena,C,D,M) + convertirRomano(decena,X,L,C) +
convertirRomano(unidad,I,V,X);

romano = convertirRomano(millar,M,VV,II) + romParte;
if (num>3999) {
/* Si el número ingresado excede al 3999 la representación de los millares
usa diferentes símbolos */

romano = convertirRomano(millar,II,VV,XX) + romParte + "\n(los símbolos en
minúsculas representan múltiplos de 1000)"
;
}

System.out.println("La traducción a números romanos de " + num + " es: " +
romano);
} else {
if (num == 0) {
System.out.println("Fin del programa.");
} else {
System.err.println("El número " + num + " está fuera de rango.");
}
}
} while (num != 0);
}

private static String convertirRomano(byte digito, char a, char b,
char c) {
String rom = "";

if (digito>=4) {
rom += b;
}
switch (digito) {
case 4:
rom = a+rom;
break;
case 9:
rom = ""+a+c;
break;
default:
if (digito >= 6 && digito <=8) {
digito -= 5;
}
if (digito != 5 && digito != 0){
forint i = 1; i <= digito; i++) {
rom += a;
}
}
break;
}
return rom;
}
}






15.1. Diagrama de flujo (SmartDraw):



15.2. Pseudocódigo:

INICIO Grados
REAL temp, enKelvin = 273.15;
CHAR resp;
BOOLEAN parametro, repetir = true;

Repetir
Escribir "Ingrese la temperatura en grados Celsius que desee convertir a grados
Kelvin"
;
Leer temp;
Escribir temp + "° Celsius es equivalente a " + (temp + enKelvin) + "° Kelvin";

Repetir
Escribir "¿Repetir proceso? (s/n)";
Leer resp;
Segun (resp) Hacer
"s":
"S":
parametro = false;
"n":
"N":
repetir = false;
parametro = repetir;
De Otro Modo:
parametro = true;
// Error.
Escribir "Por favor ingrese un valor válido."
FinSegun
Mientras Que (parametro);
Mientras Que (repetir);
FIN



15.3. Código en JAVA:

package gradoskelvin_15;
import java.util.Scanner;
/* @author zeintger */

public class GradosKelvin_15 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

float temp, enKelvin = (float) 273.15;
String resp;
boolean parametro, repetir = true;

do {
System.out.println("Ingrese la temperatura en grados Celsius que desee convertir
a grados Kelvin"
);
temp = teclado.nextFloat();

System.out.println(temp + "° Celsius es equivalente a " + (temp + enKelvin)
+ "° Kelvin");
do {
System.out.println("¿Repetir proceso? (s/n)");
resp = teclado.next();
switch (resp){
case "s":
case "S":
parametro = false;
break;
case "n":
case "N":
repetir = false;
parametro = repetir;
break;
default:
parametro = true;
System.err.println("Por favor ingrese un valor válido.");
break;
}
} while (parametro);
} while (repetir);
}
}