Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

 

Java задача

Featured Replies

Напишете програма, която изписва на конзолата дали дадено положително число се дели на 3 или на 5 без остатък.

преди 5 часа, Tonny Petkova написа:

Напишете програма, която изписва на конзолата дали дадено положително число се дели на 3 или на 5 без остатък.

Здравейте !

Бихте ли приложили разработения от Вас код до момента ? 

А, и още нещо - Ванката днеска на Шумен ли е или пак е тренирал вдигане на 4х100 на маса с неговите :beer: ?

Редактирано от soundtracker (преглед на промените)

  • Автор
преди 12 часа, soundtracker написа:

Здравейте !

Бихте ли приложили разработения от Вас код до момента ? 

А, и още нещо - Ванката днеска на Шумен ли е или пак е тренирал вдигане на 4х100 на маса с неговите :beer: ?

Решението ми беше никакво и не си изпратих домашното.

Относно Ванката, не се е прибирал човекът и не знаем къде е. Тежка седмица, си мисля аз. :D

преди 39 минути, Tonny Petkova написа:

Решението ми беше никакво и не си изпратих домашното.

Относно Ванката, не се е прибирал човекът и не знаем къде е. Тежка седмица, си мисля аз. :D

Да, питам и аз все едно не знам какво става по 8-ми декември ...

Добре, въпреки, че малко се оттърва влака (явно), ще приложа едно решение, което дава отговора. Иска ми се да видя и Ваш вариант обаче - в случай, че това Ви е трябвало като задание по специалност с която всъщност след това ще започнете работа, силно Ви препоръчвам да го направите. Ако пък програмирането Ви се води "онова нещо, дето просто е трябвало да запълнят 3-4 часа в седмицата", явно приоритета му е нулев ...

import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        System.out.println(String.format("Is %d divisible by 3 and 5 : %s\n", input, Boolean.toString(input%3==0 && input%5==0)));
    }
}

P.S. Тъй като съм почти убеден, че това задание е нечие "професорско"/"доцентско"/"асистентско" задание, ще бъде ли проблем да споделите поне на кой университет правим умствените упражнения - като гледам тая Java, имам усещането за ТУ, но все пак да видим :D .

Поздрави !  

Редактирано от soundtracker (преглед на промените)

  • Автор
преди 13 минути, soundtracker написа:

Да, питам и аз все едно не знам какво става по 8-ми декември ...

Добре, въпреки, че малко се оттърва влака (явно), ще приложа едно решение, което дава отговора. Иска ми се да видя и Ваш вариант обаче - в случай, че това Ви е трябвало като задание по специалност с която всъщност след това ще започнете работа, силно Ви препоръчвам да го направите. Ако пък програмирането Ви се води "онова нещо, дето просто е трябвало да запълнят 3-4 часа в седмицата", явно приоритета му е нулев ...


import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        System.out.println(String.format("Is %d divisible by 3 and 5 : %s\n", input, Boolean.toString(input%3==0 && input%5==0)));
    }
}

P.S. Тъй като съм почти убеден, че това задание е нечие "професорско"/"доцентско"/"асистентско" задание, ще бъде ли проблем да споделите поне на кой университет правим умствените упражнения - като гледам тая Java, имам усещането за ТУ, но все пак да видим :D .

Поздрави !  

Не става въпрос за университет, а за курс по програмиране - Телерик. :D  И аз мога да го направя по този начин, но се иска със switch-case конструкцията. 

преди 11 минути, Tonny Petkova написа:

Не става въпрос за университет, а за курс по програмиране - Телерик. :D  И аз мога да го направя по този начин, но се иска със switch-case конструкцията. 

Dejavu ... 

В тази тема ми искат същия безумен подход за решаване на задача с булеви параметри и някакви маймуни. Явно става дума за един и същ курс/преподавател/запитващ - в случая това не ме вълнува.

Но се запитвам ако това е реално така, що за подход е да Ви обучават на грешно алгоритмично конструиране на решенията за даден проблем ? 

Без да се заяждам, нека да оценим самата задача:

1) Иска се написването на алгоритъм, който при подадено цяло число, да проверява дали се дели на 3 и на 5.

2) Проверките за целочислено делене са чрез използването на оператора "Остатък от целочислено делене" - т.нар. оператор модул (%).

3) Операцията модул има 2 параметъра - числото за проверка (n) и число за делене (p). Резултата от тази операция е число в интервала [-p+1, p-1] (в зависимост от знака пред n).

4) Ако резултата от модулната операция е 0, то числото n се дели на p без остатък.

В цялата тази логическа поредица, стъпките са изцяло математически операции, които произвеждат true/false резултати

За разлика от цитираната тема обаче, тук поне типовете са числови. И switch може да работи (макар и при абсолютно дебилно и безпочвено използване).

Горния код ще се трансформира до следното:

import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        int modulusRemainerThree = input%3;
        switch (modulusRemainerThree) {
            case 0: 
                System.out.println(String.format("Is %d divisible by 3 and 5 : %s\n", input, Boolean.toString(input%5==0)));
                break;
            default: System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                break;
        }
    }
}

Или ако искаме тотално да докараме сърдечен удар на колегите-програмисти:

import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        int modulusRemainerThree = input%3;
        switch (modulusRemainerThree) {
            case 0: {
                int modulusRemainerFive = input%5;
                switch(modulusRemainerFive) {
                    case 0: 
                        System.out.println(String.format("Is %d divisible by 3 and 5 : true\n", input));
                        break;
                    default: 
                        System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                        break;
                }
                break;
            } 
            default: 
                System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                break;
        }
    }
}

Оставям на Вас анализа на горните две "творения" и защо смятам, че в момента това, на което Ви учат ще го изхвърлите още първия ден, като дойдете в някой проект.

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

Поздрави !

 

  • Автор
преди 13 минути, soundtracker написа:

Dejavu ... 

В тази тема ми искат същия безумен подход за решаване на задача с булеви параметри и някакви маймуни. Явно става дума за един и същ курс/преподавател/запитващ - в случая това не ме вълнува.

Но се запитвам ако това е реално така, що за подход е да Ви обучават на грешно алгоритмично конструиране на решенията за даден проблем ? 

Без да се заяждам, нека да оценим самата задача:

1) Иска се написването на алгоритъм, който при подадено цяло число, да проверява дали се дели на 3 и на 5.

2) Проверките за целочислено делене са чрез използването на оператора "Остатък от целочислено делене" - т.нар. оператор модул (%).

3) Операцията модул има 2 параметъра - числото за проверка (n) и число за делене (p). Резултата от тази операция е число в интервала [-p+1, p-1] (в зависимост от знака пред n).

4) Ако резултата от модулната операция е 0, то числото n се дели на p без остатък.

В цялата тази логическа поредица, стъпките са изцяло математически операции, които произвеждат true/false резултати

За разлика от цитираната тема обаче, тук поне типовете са числови. И switch може да работи (макар и при абсолютно дебилно и безпочвено използване).

Горния код ще се трансформира до следното:


import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        int modulusRemainerThree = input%3;
        switch (modulusRemainerThree) {
            case 0: 
                System.out.println(String.format("Is %d divisible by 3 and 5 : %s\n", input, Boolean.toString(input%5==0)));
                break;
            default: System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                break;
        }
    }
}

Или ако искаме тотално да докараме сърдечен удар на колегите-програмисти:


import java.util.Scanner;
public class Divider {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        sc.close();
        int modulusRemainerThree = input%3;
        switch (modulusRemainerThree) {
            case 0: {
                int modulusRemainerFive = input%5;
                switch(modulusRemainerFive) {
                    case 0: 
                        System.out.println(String.format("Is %d divisible by 3 and 5 : true\n", input));
                        break;
                    default: 
                        System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                        break;
                }
                break;
            } 
            default: 
                System.out.println(String.format("Is %d divisible by 3 and 5 : false\n", input));
                break;
        }
    }
}

Оставям на Вас анализа на горните две "творения" и защо смятам, че в момента това, на което Ви учат ще го изхвърлите още първия ден, като дойдете в някой проект.

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

Поздрави !

 

Разбирам те напълно.. С тая конструкция switch-case се удължава кодът и е толкова.. ми не знам, излишно писане се получава. Аз го бях измислила, но по друг начин без тва switch-case, обаче после ми правят забележка, че трябва да са неща, от урока, на когото сме.. не знам прост..

преди 12 минути, Tonny Petkova написа:

Разбирам те напълно.. С тая конструкция switch-case се удължава кодът и е толкова.. ми не знам, излишно писане се получава. Аз го бях измислила, но по друг начин без тва switch-case, обаче после ми правят забележка, че трябва да са неща, от урока, на когото сме.. не знам прост..

Т.е. това е проблем на самите задачи. Недоизмислени ама грам. 

Добре, нека започнем от следното - кога изобщо има смисъл да използваме switch:

1) Самия switch е абсолютно еквивалентен на if-elseif-...-else chain-овете. Т.е. дали ще имате switch или много if-elseif-else логики е все едно.

2) Break e ключова дума за напускане на switch statement-а. Ако се изпусне, се получава "пропадане" .

3) Логически, switch операция се ползва основно върху Integer/целочислени типове, enum-и и String-ове. Общото между тях е, че типовете им не са строго изброими (за разлика от Boolean - на ниво Java, Boolean няма как да има други стойности освен true или false) , не са податливи на информационна грешка (като Double/Float) и типовете са сравними по стойност (Само String и Enum правят изключение, но String-а така или иначе почти се държи като примитивен с оглед на String Pool-а, докато Enum-ите са затворени типове с ограничен набор единично-създадени стойности). В общи линии, сравняването става все едно се използва оператора "==" - това обяснява защо обекти от разни класове не могат да са в switch-а.

Кога има смисъл да се ползва Switch:

1) Когато искаме по-чист запис на логика с един вход и много възможни изходи, в зависимост от текущите данни.

2) Когато имаме композиция от логика, която може да се възползва от логиката за "пропадане" - тук фактически отново може да се ползва if-else-if-elseif логика, но е по-объркваща.

Един пример за това да е напише код, който по ден от седмицата да определи да е почивен или не - switch-а ще направи case клаузи за всеки ден, подредени от понеделник до петък и само за петък ще трябва да се изведе, че е работен и да се сложи break. Така логиката за всички работни ще е само в последния и flow-а на програмата ще пропадне до там.

3) Когато искаме да разделим определени обработки (сегрегиране) на програмната логика, които се изпълняват само при определени стойности на данните - т.е. получаваме число и само за 2 и 12, програмата трябва да направи нещо по-различно. В останалите случай (default), кода ще продължи нормално. Същия ефект се получава и с един if-else.

В реалния свят, switch се използва рядко, като най-често се прави в случаи 1) и 2) (парадоксално, но 2) даже е по-честия вариант).

Та толкова в общи линии.

Дано Ви е полезно това.

Поздрави !

  • Автор
преди 48 минути, soundtracker написа:

Т.е. това е проблем на самите задачи. Недоизмислени ама грам. 

Добре, нека започнем от следното - кога изобщо има смисъл да използваме switch:

1) Самия switch е абсолютно еквивалентен на if-elseif-...-else chain-овете. Т.е. дали ще имате switch или много if-elseif-else логики е все едно.

2) Break e ключова дума за напускане на switch statement-а. Ако се изпусне, се получава "пропадане" .

3) Логически, switch операция се ползва основно върху Integer/целочислени типове, enum-и и String-ове. Общото между тях е, че типовете им не са строго изброими (за разлика от Boolean - на ниво Java, Boolean няма как да има други стойности освен true или false) , не са податливи на информационна грешка (като Double/Float) и типовете са сравними по стойност (Само String и Enum правят изключение, но String-а така или иначе почти се държи като примитивен с оглед на String Pool-а, докато Enum-ите са затворени типове с ограничен набор единично-създадени стойности). В общи линии, сравняването става все едно се използва оператора "==" - това обяснява защо обекти от разни класове не могат да са в switch-а.

Кога има смисъл да се ползва Switch:

1) Когато искаме по-чист запис на логика с един вход и много възможни изходи, в зависимост от текущите данни.

2) Когато имаме композиция от логика, която може да се възползва от логиката за "пропадане" - тук фактически отново може да се ползва if-else-if-elseif логика, но е по-объркваща.

Един пример за това да е напише код, който по ден от седмицата да определи да е почивен или не - switch-а ще направи case клаузи за всеки ден, подредени от понеделник до петък и само за петък ще трябва да се изведе, че е работен и да се сложи break. Така логиката за всички работни ще е само в последния и flow-а на програмата ще пропадне до там.

3) Когато искаме да разделим определени обработки (сегрегиране) на програмната логика, които се изпълняват само при определени стойности на данните - т.е. получаваме число и само за 2 и 12, програмата трябва да направи нещо по-различно. В останалите случай (default), кода ще продължи нормално. Същия ефект се получава и с един if-else.

В реалния свят, switch се използва рядко, като най-често се прави в случаи 1) и 2) (парадоксално, но 2) даже е по-честия вариант).

Та толкова в общи линии.

Дано Ви е полезно това.

Поздрави !

Както винаги изчерпателен :D Човек много може да научи от теб. Толкова обстоятелствено, подредено и смислено е написано всичко, как да не си ми бил полезен. Със сигурност и не само на мен. 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.