Would you like to make this site your homepage? It's fast and easy...
Yes, Please make this my home page!
Solución de ejercicios de Solemne 2
1.- Construir una aplicación JAVA que lea las notas de un curso hasta encontrar el caracter #.
Una vez que termina el programa, se deberá imprimir lo siguiente :
a) Total de notas ingresadas
b) Promedio de notas
c) Nota mayor y menor
d) Nota que se repite la mayor cantidad de veces(asumir que esta repetición es única)
e) Total de notas mayores o iguales a 4.0 y total de notas menores de 4.0
f) Su aplicación debe validar que las notas estén entre 1.0 y 7.0. Si se equivoca más de tres veces
durante el ingreso, el programa debe terminar indicando que "Finalización forzada por un número de intentos fallidos"
import java.io.*;
class NotasCurso
{
public static void main(String arg[]) throws IOException
{
int contNotas = 0, contErrores = 0, rojos = 0, azules = 0;
double mayorNota = 0.0 , menorNota = 8.0 , promNotas = 0.0;
double nota;
int posicion;
/*
posicion = nota * 10 - 10
nota = (posicion + 10) / 10
*/
String entrada;
int arrNotas[] = new int[61];
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese nota : ");
entrada = in.readLine();
/* Logicamente en el papel se puede usar : while(entrada != "#"), pero para compilar, se tiene que
procesar el caracter cero del String entrada */
while(entrada.charAt(0) != '#')
{
nota = Double.parseDouble(entrada);
if (nota >= 1.0 && nota <= 7.0)
{
contNotas++;
posicion = (int)(nota * 10) - 10;
arrNotas[posicion]++;
if (nota > mayorNota) mayorNota = nota;
if (nota < menorNota) menorNota = nota;
if (nota >= 4.0) azules++;
if (nota < 4.0) rojos++;
}
else contErrores++;
if (contErrores == 3)
{
System.out.print("Finalizacion forzada por un numero de intentos fallidos");
break;
}
System.out.print("Ingrese nota : ");
entrada = in.readLine();
}
if (contErrores < 3)
{
int i, mayor = 0, posMayorRep = -1;
for(i = 0; i < arrNotas.length; i++)
{
promNotas += arrNotas[i] * ((i + 10) / 10.0);
if (arrNotas[i] > mayor)
{
mayor = arrNotas[i];
posMayorRep = i;
}
}
promNotas /= contNotas;
System.out.println("Cantidad de notas ingresadas : " + contNotas);
System.out.println("Promedio de notas : " + promNotas);
System.out.println("Nota mayor : " + mayorNota);
System.out.println("Nota menor : " + menorNota);
nota = (posMayorRep + 10) / 10.0;
System.out.println("Nota que mas se repite : " + nota);
System.out.println("rojos : " + rojos + "\tazules : " + azules);
}
}
}Bajar archivo
2.- Declare un vector de elementos de tipo "float" de tamaño 12 x 31 paraalmacenar las
temperaturas de los días de un año. Utilizando esta estructura de datos, y asumiendo un ingreso desde teclado, escriba
el código para encontrar :
a) El día mas frío y más caluroso del año
b) La temperatura media de cada mes
c) la diferencia entre el día más frío y más caluroso de cada mes.
float temp[][] = new float[12][31];
int mesMasFrio, diaMasFrio;
int mesMasCaluroso, diaMasCaluroso;
String mes[] = { "Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio",
"Agosto","Septiembre","Octubre","Noviembre","Diciembre" };
float tempMedia = 0.0;
float menor, mayor;
int i,j;
menor = mayor = temp[0][0];
for(i = 0; i < 12; i++)
for(j = 0; j < 31; j++)
{
if (temp[i][j] < menor)
{
mesMasFrio = i;
diaMasFrio = j;
}
if (temp[i][j] > mayor)
{
mesMasCaluroso = i;
diaMasCaluroso = j;
}
}
System.out.println("Dia mas frio del agno : " + diaMasFrio + " de " + mes[mesMasFrio]);
System.out.println("Dia mas caluroso del agno : " + diaMasCaluroso + " de " + mes[mesMasCaluroso]);
for(i = 0; i < 12; i++)
{
tempMedia = 0.0;
menor = mayor = temp[i][0];
for(j = 0; j < 31; j++)
{
tempMedia += temp[i][j]
if (temp[i][j] < menor) diaMasFrio = j;
if (temp[i][j] > mayor) diaMasCaluroso = j;
}
tempMedia /= 31;
System.out.print("Mes : " + mes[i]);
System.out.print("\tdiferencia maxima : " + temp[i][diaMascaluroso] - temp[i][diaMasFrio] );
System.out.print("\tTemp media : " + tempMedia);
}