Професионална програма
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