Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

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);
}