Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Vasil.Velinov avatar Vasil.Velinov 1 Точки

Проблем с зада "Изписване на число до 100 с думи".

Здравейте колеги,

Имам малък проблем  с тази зада Изписване на число до 100 с думи която е от Programing Basics with Java.

В Judge ми дава 92/100 защото съм сложил едни разтояния в кода зада може двете думи да не се залепят на изхода.

Това е условието на задачата:

Изписване на число до 100 с думи
Да се напише програма, която превръща число [0…100] в текст: 25  “twenty five”. Ако числото не е в диапазона, принтирайте „invalid number”.
Примери:
 
вход    изход        вход    изход        вход    изход        вход    изход       
0
    zero         67    sixty seven         -1    invalid number         14    fourteen    

Въпроса ми е как да ги направя тези разтония за взема тези 100/100 :)

Етого и кода ми:

https://pastebin.com/f7DL4GQ5

Благодаря ви много .

Тагове:
0
Programming Basics
jorotennis avatar jorotennis 4 Точки

Напиши ''twenty " и . т. н сложи по един спейс на всичките

0
jorotennis avatar jorotennis 4 Точки

И махни спейсовете  на one и т. н и готово

0
Vasil.Velinov avatar Vasil.Velinov 1 Точки

Направих каквото колегата каза, но продължава Judge да ми дава грешка за тези спейсове :) 

0
ZhPetkov avatar ZhPetkov 45 Точки

Здравей колега,

аз до одеве се мъчих със задачката. 


Ето моето решение:

https://pastebin.com/87QZiZYS

Дано ти помогне с нещо.

0
Bloodless avatar Bloodless 1 Точки

Задачата много ми хареса. Със спейс дава грешка при къргли числа 20, 30, 60 и т.н. защото judge иска само 50, а не 50 с интервал :) Или обратното при 2, 3, 7 и т.н. Сложих една проверка кога какво трябва да разпечата между двата switch-а:

https://pastebin.com/9941PqTQ

0
20/02/2018 23:59:12
dimiOrange avatar dimiOrange 63 Точки

Здравей,

Както си разсъждавал трябва да се добави още една проверка за единиците според мен. Аз я добавих и постигнах 100/100.

След твоето решение добавям и своето, ако е интересно да се разгледа.

Поздрави

import java.util.Scanner;

public class TestForumQuestion {
        public static void main(String[] args) {
            Scanner console = new Scanner(System.in);
            int num = Integer.parseInt(console.nextLine());

            if (num < 0 || num > 100) {
                System.out.println("invalid number");
            } else if (num == 0) {
                System.out.println("zero");
            } else if (num == 100) {
                System.out.println("one hundred");
            } else if (num < 10 && num % 10 == 1) {
                System.out.print("one");
            } else if (num < 10 && num % 10 == 2) {
                System.out.print("two");
            } else if (num < 10 && num % 10 == 3) {
                System.out.print("three");
            } else if (num < 10 && num % 10 == 4) {
                System.out.print("four");
            } else if (num < 10 && num % 10 == 5) {
                System.out.print("five");
            } else if (num < 10 && num % 10 == 6) {
                System.out.print("six");
            } else if (num < 10 && num % 10 == 7) {
                System.out.print("seven");
            } else if (num < 10 && num % 10 == 8) {
                System.out.print("eight");
            } else if (num < 10 && num % 10 == 9) {
                System.out.print("nine");
            } else {
                if (num > 10 && num < 20) {
                    if (num == 11) {
                        System.out.println("eleven");
                    } else if (num == 12) {
                        System.out.println("twelve");
                    } else if (num == 13) {
                        System.out.println("thirteen");
                    } else if (num == 14) {
                        System.out.println("fourteen");
                    } else if (num == 15) {
                        System.out.println("fifteen");
                    } else if (num == 16) {
                        System.out.println("sixteen");
                    } else if (num == 17) {
                        System.out.println("seventeen");
                    } else if (num == 18) {
                        System.out.println("eighteen");
                    } else if (num == 19) {
                        System.out.println("nineteen");
                    }
                } else {
                    if (num / 10 == 1) {
                        System.out.println("ten");
                    } else if (num / 10 == 2) {
                        System.out.print("twenty");
                    } else if (num / 10 == 3) {
                        System.out.print("thirty");
                    } else if (num / 10 == 4) {
                        System.out.print("forty");
                    } else if (num / 10 == 5) {
                        System.out.print("fifty");
                    } else if (num / 10 == 6) {
                        System.out.print("sixty");
                    } else if (num / 10 == 7) {
                        System.out.print("seventy");
                    } else if (num / 10 == 8) {
                        System.out.print("eighty");
                    } else if (num / 10 == 9) {
                        System.out.print("ninety");
                    }
                    if (num % 10 == 1) {
                        System.out.print(" " + "one");
                    } else if (num % 10 == 2) {
                        System.out.print(" " + "two");
                    } else if (num % 10 == 3) {
                        System.out.print(" " + "three");
                    } else if (num % 10 == 4) {
                        System.out.print(" "+ "four");
                    } else if (num % 10 == 5) {
                        System.out.print(" " + "five");
                    } else if (num % 10 == 6) {
                        System.out.print(" " + "six");
                    } else if (num % 10 == 7) {
                        System.out.print(" " + "seven");
                    } else if (num % 10 == 8) {
                        System.out.print(" " + "eight");
                    } else if (num % 10 == 9) {
                        System.out.print(" " + "nine");
                    }
                }
            }
        }
    }

 

 

Второ решение:

import java.util.Scanner;

public class FirstOneHundredNumbersToText {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int number = Integer.parseInt(console.nextLine());

        int ones = 0;
        int tenths = 0;

        if (number < 0 || number > 100) {
            System.out.println("invalid number");
        } else if (number >= 0 && number <= 9) {
            System.out.println(sayNumbersFromZeroToNine(number));
        } else if(number >= 11 && number <= 19) {
            System.out.println(sayNumbersFromElevenToNineteen(number));
        } else if (number % 10 == 0) {
            System.out.println(sayNumbersTenTwentyAndSoOnToOneHundred(number));
        } else if (number % 10 != 0) {
            ones = number % 10;
            tenths = number - ones;
            System.out.println(sayNumbersTenTwentyAndSoOnToOneHundred(tenths)
                    + " " + sayNumbersFromZeroToNine(ones));
        }
    }

    private static String sayNumbersFromZeroToNine(int number) {
        String say = "";

        if (number == 0) {
            say = "zero";
        } else if (number == 1) {
            say = "one";
        } else if (number == 2) {
            say = "two";
        } else if (number == 3) {
            say = "three";
        } else if (number == 4) {
            say = "four";
        } else if (number == 5) {
            say = "five";
        } else if (number == 6) {
            say = "six";
        } else if (number == 7) {
            say = "seven";
        } else if (number == 8) {
            say = "eight";
        } else if (number == 9) {
            say = "nine";
        }

        return say;
    }

    private static String sayNumbersFromElevenToNineteen(int number) {
        String say = "";

        if (number == 11) {
            say = "eleven";
        } else if (number == 12) {
            say = "twelve";
        } else if (number == 13) {
            say = "thirteen";
        } else if (number == 14) {
            say = "fourteen";
        } else if (number == 15) {
            say = "fifteen";
        } else if (number == 16) {
            say = "sixteen";
        } else if (number == 17) {
            say = "seventeen";
        } else if (number == 18) {
            say = "eighteen";
        } else if (number == 19) {
            say = "nineteen";
        }

        return say;
    }

    private static String sayNumbersTenTwentyAndSoOnToOneHundred(int number) {
        String say = "";

        if (number == 10) {
            say = "ten";
        } else if (number == 20) {
            say = "twenty";
        } else if (number == 30) {
            say = "thirty";
        } else if (number == 40) {
            say = "forty";
        } else if (number == 50) {
            say = "fifty";
        } else if (number == 60) {
            say = "sixty";
        } else if (number == 70) {
            say = "seventy";
        } else if (number == 80) {
            say = "eighty";
        } else if (number == 90) {
            say = "ninety";
        } else if (number == 100) {
            say = "one hundred";
        }

        return say;
    }
}
0
Vasil.Velinov avatar Vasil.Velinov 1 Точки

Много ви благодаря колеги най- накрая се спрвих пуснах още една проверка към if-овете и се еполучи :)

Изтормози ме тази задача .

0
German40 avatar German40 15 Точки

Добави проверка за единиците

0
sasbgmob avatar sasbgmob 21 Точки

По добре ползвайте два масива . Единия от [0,,,,,,,19] ( с думи разбира се и втория [20,30,,,,,90]

тагава понеже аргумента е стринг или също може да се разглежда като масив от символи може да ползвате цифрате от входния стринг за директно индексиране в масивите. Ако имат те опит забравете и тези влудяващи в случая IF ELSE и с едни CASE с около 6 проверки сте ОК!
Който иска ще му постна решението макр и да е на  JS.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.