Професионална програма
Loading...
+ Нов въпрос
hlnet avatar hlnet 1 Точки

While-Loop - More Exercises/Java 03. Stream Of Letters

Здравейте,

С оглед на дадените примерни вход/изход моят код https://pastebin.com/RtqFAgwh изглежда коректен и работи отлично, но Judge дава 80/100.

Добавих  проверка за главни "тайни" букви https://pastebin.com/P3urtrB8,  но това не промени оценката на Judge?!? Дори повече се разсърди и ми даде 60/100-;)

Предварително благодаря за съдействие и предложения/предположения  за моята грешка!

 

 

Тагове:
0
Programming Basics with Java
slavi13 avatar slavi13 11 Точки
Best Answer

Здравейте,

Погледнах кода https://pastebin.com/RtqFAgwh  и ако съм се ориентирал правилно когато на входа бъдат получени символи примерно "coc" "ncn" отчита  все едно е срещтнал символ 'c' 'n' 'o' защото letter помни само поседната буква от 'c' 'n' 'o'.

https://pastebin.com/AzQ1BSdV  промених чест от кода и добавих коментари надявам се да е разбираемо и да помогнет.

Тук има и други решения https://softuni.bg/forum/30855/03-stream-of-letters-more-exercises

 

 

0
wylofusbk avatar wylofusbk 0 Точки

Good one. Thanks for sharing a nice piece of info. mcdvoice

0
05/06/2020 08:57:52
hlnet avatar hlnet 1 Точки

Много благодаря за разяснението, ясните обяснения и помощта!

0
MartinBG avatar MartinBG 3971 Точки

Доста сложна за проследяване логика, с много възможноси за грешки.

На пръв поглед, не спазвате тази част от условието:

При първото получаване на една от тези букви, тя се маркира като срещната, но не се запазва в думата. При всяко следващо нейно срещане се записва нормално в думата.

Не правите разграничение по типа на специалните букви и ще запишете всяка следваща специална буква (след първата), дори и да е първото ѝ срещане в потока. Отделно, ако има 3 срещания на една или две специални букви, ще изпишете думата.

 

Ето примерен алгоритъм за решаването на задачата със знанията, които имате в модула:

  • създаваме 3 булеви променливи за всяка от специалние букви (напр. nHasOccurred, oHasOccurred, cHasOccurred), които са сетнати на false в началото на всяка нова дума
  • итерираме през входните данни докато не получим "End"
  • ако получим някой специален символ проверяваме дали неговата булева променлива е сетната. Ако е - добавяме символа към думата, ако не е - сетваме булевата променлива на true и продължаваме
  • ако получим друг валиден (т.е. буква) символ - добавяме го към думата
  • след всеки символ проверяваме дали и трите булеви променливи са true. Ако да - печатаме думата, сетваме и трите променливи на false и нулираме думата

 

Примерно решение:

import java.util.Scanner;

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

        boolean oHasOccurred = false;
        boolean cHasOccurred = false;
        boolean nHasOccurred = false;

        String word = "";

        String input;
        while (!"End".equals(input = scanner.nextLine())) {
            char letter = input.charAt(0);
            boolean appendLetter = false;
            if ((letter >= 'a' && letter <= 'z') || (letter >= 'A' && letter <= 'Z')) {
                switch (letter) {
                case 'o':
                    appendLetter = oHasOccurred;
                    oHasOccurred = true;
                    break;
                case 'n':
                    appendLetter = nHasOccurred;
                    nHasOccurred = true;
                    break;
                case 'c':
                    appendLetter = cHasOccurred;
                    cHasOccurred = true;
                    break;
                default:
                    appendLetter = true;
                }
            }

            if (appendLetter) {
                word += letter;
            }

            if (oHasOccurred && nHasOccurred && cHasOccurred) {
                System.out.print(word + ' ');
                word = "";
                oHasOccurred = false;
                cHasOccurred = false;
                nHasOccurred = false;
            }
        }
    }
}

 

0
04/06/2020 00:33:08
hlnet avatar hlnet 1 Точки

Благодарности за ясния и изчистен код! Аз съм  начинаеща с ограничени познания  и кодовете ми са доста тромави.Факт! -:)

Приятен ден!

1
NikiKa avatar NikiKa 15 Точки
import java.util.Scanner;

public class StreamOfLetter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String command = scanner.nextLine();
        int c = 0, o = 0, n = 0;
        String word = "";

        while (!command.equals("End")) {
            char letter = command.charAt(0);
            if ((letter >= 'a' && letter <= 'z') || (letter >= 'A' && letter <= 'Z')) {
                switch (letter) {
                    case 'c':
                        if (c > 0) {
                            word += letter;
                        }
                        c++;
                        break;
                    case 'o':
                        if (o > 0) {
                            word += letter;
                        }
                        o++;
                        break;
                    case 'n':
                        if (n > 0) {
                            word += letter;
                        }
                        n++;
                        break;
                    default:
                        word += letter;
                }
            }

            if (c > 0 && o > 0 && n > 0) {
                System.out.print(word + " ");
                c = 0;
                o = 0;
                n = 0;
                word = "";
            }

            command = scanner.next();
        }

    }
}
0
foawietowen avatar foawietowen 8 Точки

Der er bestemt ingen bevægelser i bagagerummet som et resultat af en masse støtte, og det betyder, at du normalt er lukket inde i Atlanta skilsmisse advokater. Det er praktisk taget ikke behageligt Adidas UltraBoost sko oprindeligt på grund af det faktum, at sko eller støvler har fået langt fra støtte, og også Min partner og jeg ovenfor afstivede de bestemte snørebånd oprindeligt Adidas UltraBoost PB sko Min partner og jeg nød indenfor disse slags. Der findes et slips, som graver en smule endnu ind i den nederste del med bagfoden, alligevel forsvinder de helt øjeblikkeligt. Det kan hjælpe med at gøre den bestemte midtfodsdragt lidt stærkere sammenlignet med den søvn, men alligevel overarbejde, hvor slips kan tage det let for næsten enhver fod. tilstand.

Praktisk talt intet dårligt eller måske fremragende med https://www.kildasportssko.com/ hensyn til komponenterne, Adidas NMD CS1 PK sko næsten på lige fod med din værdi. Jeg tror, ​​at mange mennesker elsket de særlige Adidas NMD R1 V2-sko, der er identificeret fordel med Shore up V1, men siden normalt, fordi Shore up-serien flyttede fra ikke bruges til ældre indenfor 36 måneder, har komponenter fået en mindre kostbar oplevelse. Ikke desto mindre simpelthen ingen problemer med komponenter.

Det kan kræve brug eller måske et par for at kunne vænne sig til den bestemte størrelse, men alligevel er det virkelig værd at den grundlæggende sikkerhed. Det er virkelig relativt skabende ligesom de forældede tæer En individuel brug (eller BYW), som normalt flere kan have Adidas sko til salg ligesom endnu er det ikke ekstremt Adidas UltraBoost 20 Consortium sko, der kan tilpasses specifikt midtfod og også igen med hensyn til midtfodhjælp plus det tillader en god ligevægt mellem stabilitet og også generel fleksibilitet.

Bortset fra flere bittesmå udspekulerede områder med alt det greb, må jeg sige, at jeg næsten ikke har noget negativt at angive med hensyn til Shore up V4. Fremragende greb til enhver this web tid klar, fantastisk dragt Adidas-sko 2020 ud af pakken, ekstremt sikker og også risikofri oplevelse derudover er det virkelig $ 10 lavere end Adidas UltraBoost 20-sko tidligere årtier? Geez Adidas, kun hvis butikken har været nedenunder med V4-omkostningerne

0