Премини към съдържанието

Препоръчан отговор


Напишете програма, която изписва на конзолата дали дадено положително число се дели на 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 потребители

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

  • Горещи теми в момента

  • Подобни теми

    • от Anton Markov
      Здравейте колеги,
      От скоро имам проблем с моята локална мрежа. Имам два последователно свързани рутера и един суич. Връзката междъ тях е следната:
      света -> (switch) TP-LINK TF-S 1005D -> (1st router ip: 192.168.1.1) ZTE ZXHN H118N (има няколко устройства свързани към това устройство) -> (2nd router ip: 192.168.185.1) Linksys WRT54GL (моите устройства като: моб телефон, компютър и лаптоп) 
      Проблема е от около 1 седмица и по някаква причина между 1ви и 2ри рутер отвреме-навреме няма връзка. Дори като е включен кабела идващ от първият рутер към лаптопа или компютъра, пак няма интернет. Но докато съм свързан към WI-FI на първият рутер изведнъж по някое време от нищото идва и спира интернета на вторият. Вторият ми е много важен и не знам как бих работил без него. Надявам се някой да може да ми помогне с намирането на проблема.
    • от Kristian Krastev
      Здравейте,написал съм едно текстово поле и една текстова област, 
      направил съм бутон "Търси",искам неговият ActionListener да взима текста от текстовото поле
      и да го търси в текстова област,или по някакъв начин да го отбелязва?
      Благодаря предварително!

    • от Kristian Krastev
      Здравейте,
      искам да попитам ако имам това:
      JLabel time = new JLabel();
      JLabel time1 = new JLabel();
              Thread clock = new Thread() {
                  public void run() {
                      for (;;) {
                      Date date = new Date();
                      SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
                      
                      time.setText(format.format(date));
                      time1.setText(format.format(date));
                      try {
                          sleep(1000);
                      } catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                  }
              }
          };
          clock.start();
       
      как да направя на time и time1 int едното минус другото, за да ми даде разликата примерно ако time е 14:00 а time1 е 14:01 
      да ми изведе времетраене 00:01 една минута.
       
      time ще е когато се натисне един бутон а time1 когато се натисне друг бутон,и
      целта е да даде разликата в времето на натискането на бутоните.
      Благодаря предварително!
    • от Kristian Krastev
      Здравейте,
      искам да попитам ако една JTextArea чете от три файла:
      файл "A" файл "B" и файл "C"
      Имали как JTextArea примерно като прочете реда от файл "A"  реда да бъде с червен цвят,
      реда от файл "B" да бъде със син цвят а реда от файл "C" да бъде с зелен цвят.
    • от Kristian Krastev
      ако int = 0;
      и после му зададеш да дава по едно число отгоре след натискане на бутон с i++;
      как мога да запазя последното дадено число от i след рестарт на програмата?
      Примерно i++; System.out.println(i); натиснал съм 50 пъти бутона и стигнало до 50 но след рестарт пак ще започне
      от 0.
      Въпроса ми е как да продължи от 50? 
  • Дарение

×

Информация

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