0votos

Sak! (Programacion en C) en Java

por Leandro Gutierrez hace 2 meses

Tengo que admitir que me costo un poco jaja Creo que con los comentarios en el código se entiende lo que trate de hacer Toda critica constructiva será muy bien bienvenida

Entrada: Un texto formado por caracteres alfabéticos y blancos. Cada palabra del texto está formada exclusivamente por caracteres alfabéticos y mide entre 1 y 10 caracteres de longitud. Salida: La cantidad de veces que aparece la palabra "sak" o algo parecido: cualquier cadena de mayúsculas o minúsculas que empiece con una o más "s", siga con una o más "a" y termine con una o más "k".

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package sak; 
 
import java.util.Scanner; 
/** 
 * @author leandro 
 */ 
public class Sak { 
 
    public static void main(String[] args) { 
        String cadena, palabra; 
        int cantidad=0; 
    //cambiar el contenido por el que se quiera evaluar 
        Scanner entrada = new Scanner("kkkkkkkkkkksaksaaak asdasda   aasak saak");  
         
        while (entrada.hasNextLine()) { 
            palabra = entrada.next(); //pido la siguiente palabra 
            
        if (analisisDeSAK(palabra)) {  //analizo si tiene la combinacion sak 
                System.out.println("La palabra: " + palabra + " tiene SAK!"); 
                cantidad++; 
        System.out.println("La frase tiene "+cantidad+" palabras con SAK!"); 
 
    public static boolean analisisDeSAK(String cadena) { 
        char caracter, anterior; 
        anterior = ' '; //guardo el caracter anterior 
        boolean tieneS = false; 
        boolean tieneA = false; 
        boolean tieneK = false; 
 
        for (int i = 0; i < cadena.length(); i++) { 
 
            caracter = cadena.charAt(i); 
         
            if (caracter == 'S' || caracter == 's') { 
                tieneS = true; 
            //confirmo que la letra anterior sea una A o S  
            if ((caracter == 'A' || caracter == 'a') && (anterior == 'A' || anterior == 'a' || anterior == 'S' || anterior == 's')) { 
                tieneA = true; 
        //confirmo que la letra anterior sea una A 
            if ((caracter == 'K' || caracter == 'k') && (anterior == 'A' || anterior == 'a')) { 
                tieneK = true; 
     
            if (tieneS && tieneA && tieneK) {  
                return true; 
        // si sucede que tengo una letra no deseada en el medio vuelvo a falso todo para seguir comparando 
        // Ej: SaaTaak  
            if (caracter != 'S' && caracter != 's' && caracter != 'A' && caracter != 'a' && caracter != 'K' && caracter != 'k') { 
                tieneS = false; 
                tieneA = false; 
                tieneK = false; 
             
            anterior = caracter; 
 
        return false; 
 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.