Cabana_Mario_Ariel_F

Clase Ejercicio5 - TPN°2 - Grupo02

Apr 20th, 2022
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.15 KB | None | 0 0
  1. /*
  2.  ======================================================================================================================
  3.  * Modelo de Desarrollo de Programas y Programación Concurrente - Facultad de Ingeniería - Universidad Nacional de Jujuy
  4.   ======================================================================================================================
  5.  */
  6.  
  7. /**
  8.  * @Autor: Grupo 02 M.D.P y P.C.
  9. /*      @Integrantes:                  |    @Carrera:             |   @DNI:
  10.                                        |                          |
  11.   ALVAREZ, Cesar Fabian                | Ing. Informática         | 41.275.832
  12.   CABANA, Mario Ariel Fernando         | Ing. Informática         | 42.268.639
  13.   MONTELLANO, Leandro                  | Ing. Informática         | 43.114.035
  14.   RETAMOZO CORTEZ, Candelaria          | Ing. Informática         | 95.790.260
  15.   RUIZ, Erica Vanina                   | Ing. Informática         | 38.471.424
  16.  
  17.  * @Fecha: 21/04/2022.
  18.  */
  19.  
  20.  /*
  21.    Trabajo Práctico N°2 / Introducción a Java Parte 1 / Punto 05
  22.   ---------------------   ---------------------------   --------
  23.   * Objetivo General: Cree una aplicación que lea el archivo “TP02Frase.txt”, pasarle la ubicación al programa.
  24.                       A continuación debe calcular y mostrar lo siguiente:
  25.                       - Cantidad de cada una de las vocales (cantidades de A/a, E/e, I/i, O/o y U/u).
  26.                       - Cantidad de espacios en blanco.
  27.                       - Cantidad de palabras.
  28.                       - Cantidad de letras en mayúscula.
  29.                       - Cantidad de líneas del archivo.
  30.                       - Cantidad de signos de puntuación.
  31.                       - Para cada vocal (acentuada o no) obtenga el código ASCII, adiciónele 20 a dicho
  32.                         valor, y vuelva a obtener el carácter correspondiente reemplazando el nuevo
  33.                         valor en la frase original. Muestre por pantalla el nuevo resultado.
  34.   * El trabajo se ha realizado utilizando las siguientes IDEs: Eclipse 2020-06(4.16)-(IDE for Java Developers) - Apache Netbeans IDE 12.4 - IntelliJ IDEA 2021.2.3
  35.   * Lenguaje de programación: Java POO.
  36.   * Api a utilizar. Paquete:- Java.util / Clase:- StringTokenizer, Scanner.
  37.   *                 Paquete:- Java.io / Clase:- BufferedReader, FileReader, IOException.
  38.   * Clase principal: EntregaTPN2.
  39.   * Clases secundarias: HelperTp2, Ejercicio5, Ejercicio6.
  40.   */
  41. package ar.edu.unju.aplicacion;
  42. import java.io.BufferedReader;
  43. import java.io.FileReader;
  44. import java.io.IOException;
  45. import java.util.StringTokenizer;
  46.      
  47.     public class Ejercicio5 {
  48.         //------------Vector para toda la clase Tp02ejer5------------//
  49.  
  50.         public static char[]a={'a','A','á','Á'},e={'e','E','é','É'},i={'i','I','­','í','Í'},o={'o','O','ó','Ó'},u={'u','U','ú','Ú'};
  51.  
  52.         //------------------- Inicio método run() -------------------//
  53.  
  54.         public static void run(){
  55.         // Cadena para guardar el contenido de una linea de texto.
  56.         String linea;
  57.  
  58.         // Contadores.
  59.         int espaciosBlanco=0, mayusculas=0,signos=0,palabras=0,totalLineas=0;
  60.         int vocalA=0,vocalE=0,vocalI=0,vocalO=0,vocalU=0;
  61.  
  62.         System.out.println("----------  EJERCICIO 5 - Texto ---------------");
  63.         try {
  64.             // Lectura del archivo.
  65.             FileReader fr = new FileReader("C:\\Users\\Alicia Alfaro\\fi\\year 3\\Modulo de Desarrollo de Programas y Programación Concurrente\\tp2\\TP02Frase.txt");
  66.             BufferedReader br = new BufferedReader(fr);
  67.  
  68.             while((linea=br.readLine())!=null){
  69.             // Se imprime en pantalla la linea leida.
  70.             System.out.println(linea);
  71.  
  72.             // Se guarda cada linea como un vector de caracteres.
  73.             char[] lineaChar=linea.toCharArray();
  74.  
  75.             /* Se cuentan las vocales
  76.                Aqui se tiene en cuenta que las vocales pueden llevar tilde
  77.                por lo que es mas conveniente guardarlas en un vector
  78.                de caracteres que usar el el codigo ASCII.*/
  79.             vocalA+=recorrerLinea(lineaChar, a);
  80.             vocalE+=recorrerLinea(lineaChar, e);
  81.             vocalI+=recorrerLinea(lineaChar, i);
  82.             vocalO+=recorrerLinea(lineaChar, o);
  83.             vocalU+=recorrerLinea(lineaChar, u);
  84.  
  85.             // Se cuentan los espacios en blanco.
  86.             espaciosBlanco+=detectarVocal(lineaChar, ' ');
  87.  
  88.             // Se cuentan las palabras.
  89.             StringTokenizer st=new StringTokenizer(linea);
  90.             palabras+=st.countTokens();
  91.  
  92.             // Se cuentan las mayusculas.
  93.             mayusculas+=contarMayusculasSignos(lineaChar,1);
  94.  
  95.             // Se cuentan las lineas.
  96.             totalLineas++;
  97.  
  98.             // Se cuentan los signos.
  99.             signos+=contarMayusculasSignos(lineaChar,2);
  100.  
  101.             /* Se transforma el texto con el codigo ASCII segun indica
  102.                la consigna.*/
  103.             System.out.println(modificarLineaASCII(linea, lineaChar));
  104.             }
  105.             System.out.println("--------------  Resultados -------------------");
  106.  
  107.             mostrarResultado("vocales a",vocalA);
  108.             mostrarResultado("vocales e",vocalE);
  109.             mostrarResultado("vocales i",vocalI);
  110.             mostrarResultado("vocales o",vocalO);
  111.             mostrarResultado("vocales u",vocalU);
  112.             mostrarResultado("espacios en blanco",espaciosBlanco);
  113.             mostrarResultado("palabras",palabras);
  114.             mostrarResultado("letras en mayusculas",mayusculas);
  115.             mostrarResultado("lineas",totalLineas);
  116.             mostrarResultado("signos de puntutación",signos);
  117.             fr.close();
  118.         }
  119.         catch (IOException e) {
  120.             System.out.println("Error No se encontro el archivo:" + e.getMessage());
  121.             }
  122.         }
  123.  
  124.         //------------------ Contadores Especificos Char ------------------//
  125.         /* Este metodo recorre una linea de texto que se encuentra como
  126.            un vector de caracteres.*/
  127.         public static int recorrerLinea(char[] texto,char[] vocales) {
  128.         int contador=0;
  129.         for(int i=0;i<vocales.length;i++) {
  130.             contador+=detectarVocal(texto, vocales[i]);
  131.         }
  132.         return contador;
  133.         }
  134.  
  135.         //---------------- Recorrer Vector y Contar Char ----------------//
  136.         /* Este metodo detecta las vocales.*/
  137.         public static int detectarVocal(char[] text, char vocal){
  138.         int contador=0;
  139.         for(int i=0;i<text.length;i++){
  140.             if(text[i]==vocal){
  141.             contador++;
  142.               }
  143.         }
  144.         return contador;
  145.         }
  146.  
  147.         //------------------ Contar mayusculas o Signos -----------------//
  148.         /* Segun la opcion, este metodo calcula las mayusculas o signos segun
  149.            el codigo ASCII.*/
  150.         public static int contarMayusculasSignos(char[] textVectorChar, int opcion){
  151.         char op=' ';
  152.         int mayuscula=0,signos=0;
  153.             for(int i = 0; i<textVectorChar.length;i++) {
  154.                 op=textVectorChar[i];
  155.                 switch (opcion){
  156.                 case 1:
  157.                     mayuscula= mayuscula(op,mayuscula);
  158.                     break;
  159.                 case 2:
  160.                     signos=signos(op,signos);
  161.                     break;
  162.                 }
  163.             }
  164.             switch (opcion){
  165.                 case 1:
  166.                     return mayuscula;
  167.                 case 2:
  168.                     return signos;
  169.                 default:
  170.                     return 0;
  171.                 }
  172.         }
  173.  
  174.         //------------------ Detectar mayusculas ------------------//
  175.         /* Este metodo detecta las mayusculas segun el codigo ASCII.*/
  176.         public static int mayuscula(char op,int mayuscula) {
  177.  
  178.         if ((op>=65) && (op<=90)) {
  179.             mayuscula=mayuscula+1;
  180.         }
  181.          return mayuscula;  
  182.         }
  183.  
  184.         //------------------ Detectar signos de puntuacion ------------------//
  185.         /* Este metodo detecta los signos de puntuación segun el codigo ASCII.*/
  186.         public static int signos(char op, int signos) {
  187.  
  188.         if (((op>=33) && (op<=47)) || ((op>=58) && (op<=63) )||((op>=160) && (op<=191))){
  189.             signos=signos+1;
  190.         }
  191.         return signos;
  192.         }
  193.  
  194.         //------------- Aumentar Caracter mas 20 en ASCII -------------//
  195.         /* Este metodo modifica completamente el texto(segun especifica la
  196.            consigna)haciendo uso de otro metodo.*/
  197.         public static String modificarLineaASCII(String texto,char[] text) {
  198.         texto=reemplazarVocal(texto,text,u);
  199.         texto=reemplazarVocal(texto,text,e);
  200.         texto=reemplazarVocal(texto,text,i);
  201.         texto=reemplazarVocal(texto,text,o);
  202.         texto=reemplazarVocal(texto,text,a);
  203.         return texto;
  204.         }
  205.  
  206.         //--------------- Detectar vocales y reemplazar en el texto --------------//
  207.         /* Este metodo detecta las vocales (con otro metodo) mediante los
  208.            vectores de vocales definidos globalmente.
  209.            Luego los reemplaza con el metodo .replace definido en la clase String*/            
  210.         public static String reemplazarVocal(String texto,char[] text,char[] vocalColeccion) {
  211.         for(int i=0;i<text.length;i++){
  212.             for(int j=0;j<vocalColeccion.length;j++){
  213.               if(text[i]==vocalColeccion[j]){
  214.               texto=texto.replace(text[i],modificarVocal(text[i]));
  215.               }
  216.             }
  217.         }
  218.         return texto;
  219.         }
  220.  
  221.         // --------------- Detectar vocales y sumar 20 ---------------- //
  222.          /*Este metodo detecta las vocales del texto, las convierte en codigo
  223.            ASCII, le suma 20, y las vuelve a convertir a caracteres.
  224.            El metodo retorna el nuevo caracter obtenido.*/
  225.         public static char modificarVocal(char caracter) {
  226.         int numASCIIxCaracter;
  227.         numASCIIxCaracter=(int)caracter;
  228.         numASCIIxCaracter+=20;
  229.         caracter=(char)numASCIIxCaracter;
  230.         return caracter;
  231.         }
  232.  
  233.         //--------------------- Resultados - Tp02ejer5 --------------------//
  234.  
  235.         public static void mostrarResultado(String algo, int n){
  236.         System.out.println("El total de "+algo+" en el archivo .txt es: "+n);
  237.         }
  238.  
  239.     }
Add Comment
Please, Sign In to add comment