Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192

Задачник справочника "Java в примерах" Флэнагана, с подстрочником и комментариями по теме

25.12.2017, 16:19. Показов 3900. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, прошу участия в разборе задач.
Выкладываю задачи, как могу комментирую с точки зрения начинающего, выделяю непонятные действия
прошу подправлять и писать свои замечания. Дело нужное и избавит от многих однотипных вопросов.
С уважением

Задача № 1. Вычисление максимального простого числа.

Комментарии к каждой строке.
То что вызывает сомнения - выделено курсивом.
Ну и сам ответ - ну очень подозрителен.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*Описание программы:
 * Эта программа вычисляет простые числа, применяя алгоритм "Решето Эратосфена":
 *уберите числа, кратные меньшим простым числам, и все оставшиеся будут простыми.
 * 
 *Программа печатает наибольшее число, не превосходящее аргумент, заданный в командной строке.*/
 
/* метод Integer.parseInt() для преобразования в число строки символов, заданной
в командной строке*/
 
public class Pr_1_7_Sieve6 {
 
    public static void main(String[] args) {
        /*Мы вычисляем все простые числа, не превосходящие заданного значения, или,
         *если аргумент не указан, все простые числа, не превосходящие 100. // ГДЕ УКАЗЫВАЕТСЯ АРГУМЕНТ????????? */
        
//1. Обявляем переменную с максимальным значением ЧЕГО????  
        
        int max = 100;                             // Присваиваем значение ЧЕГО?????, принимаемое по умолчанию. 
        try { max=Integer.parseInt (args[0]);}     // Анализируем заданный пользователем аргумент НА ПРЕДМЕТ ЧЕГО??????
        catch (Exception e) {}                     // Молча игнорируем исключения.
        
//2. создаем массив isprime, где для каждого числа указанно простое оно или нет. 
        
        boolean [] isprime = new boolean [max+1]; // Инициализируем массив isprime ддя 100+1 (ЗАЧЕМ 100+1??????)
        for (int i=0; i<max; i++) isprime[i]=true;// Заполняем массив isprime, предполагая, что все чила простые, пока не доказанно обратное.
        isprime[0]=isprime[1]=false;              // Исключаем из полуменного массива 0 и 1, - ня являются простыми по умолчанию.
        
    //2.1 Чтобы вычислить все простые числа меньше max, нужно убрать числа кратные всем цеым, меньшим, чем кадратный корень из max
        
        int n = (int)Math.ceil(Math.sqrt(max));    // Обьявляем переменную n ДЛЯ ЧИСЛА MAX ОБРАБОТАННУЮ В  java.lang.Math.
    
    /*2.2 Проводим перебор по кратным числам, теперь для каждого целого i от 0 до n:
                                                     *    - Если i простое число, тогда никакое из кратных ему не является простым, отмечаем это в массиве.,
                                                     *    - Если i не простое число, кратные ему уже удалены, значит этот случай пропускаем*/
        
        for (int i =0; i<=n; i++) {                 
            if (isprime [i])                        //Если i простое число
                for (int j=2*i; j<=max; j=j+1)      //цикл по кратным,
                    isprime [j] = false;//они не являются простыми.
            }
//3. Находим наибольшее простое из оставшегося массива isprime [i]  (ТОЧНО, что i ?????)
        int largest;
        for (largest=max; !isprime[largest]; largest--) ; // Пустое тело цикла
        System.out.println("Наибольшее простое число, не превосходящее " + max + //Вывод результата
                " это " + largest);
        System.out.println("Получается хрень: где число 97 например ");           //оценка кода
        
    }
 
}


Добавлено через 5 минут
Помидорами прошу не кидать.
Что учу - то и выкладываю, хороших задачников с разбором полетов - нет, давайте сделаем.
Эти задачи из справочника "Javaв примерах" Флэнагана
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2017, 16:19
Ответы с готовыми решениями:

Задачник по java
Изучаю джаву. Получается плохо, ибо немогу теорию без практики. мне нужны практические упражнения, для закрепления навыков, так сказать. В...

Посоветуйте задачник по Java
сабж, только в раздел java se не отсылайте, плохой это задачник. задачи, естесно, не для начинающих (то бишь что нибудь сильно сложнее...

Нужен автоматизированный задачник по java
Здравствуйте, ищу автоматизированный задачник для Java на подобии PT4 для pascal. С данной темой ознакомился, однако крайне неудобно...

77
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
05.01.2018, 22:56  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Что за условие такое непонятное
Да условие ерунда, так из головы, просто хотел понять
систему обмена, именно с точки зрения
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Каждый класс (соответственно его методы) выполняют какие-то конкретные задачи
Сейчас, если правильно все понял, скину задачу на соответствие числу Вилсона

Добавлено через 1 час 9 минут
Вторая строка, вторая половина || !isPrime((int)n)) что значит
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static boolean am_i_wilson(double n) {
            if(n % 1 != 0 || !isPrime((int)n)) return false;
            if(n == 563) return true;
            int p = (int)n;
            return ((double)(faculty(p - 1) + 1) / (p * p)) % 1 == 0;
          }
          
          public static long faculty(int n) {
            long result = 1;
            for(int i = n; i > 1; i--) {
              result *= i;
            }
            return result;
          }
          
          public static boolean isPrime(int n) {
            if(n < 2) return false;
            for(int i = 2; i < n; i++) {
              if(n % i == 0) {
                return false;
              }
            }
            return true;
          }}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.01.2018, 23:05
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
!isPrime((int)n))
целая часть числа n не является простым числом....
1
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
05.01.2018, 23:12  [ТС]
Результат метода такого-то по n не является истиной, так что-ли??? просто не попадалось такое построение ещё.

iSmokeJC, Спасибо, что тратишь время, искренне благодарен
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
05.01.2018, 23:49
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
faculty
Это что, какое-то альтернативное название факториала?
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
05.01.2018, 23:53  [ТС]
korvin_, Да не, чужой код смотрю буквы знакомые, Они явно математики не знают Число Вилсона подгоняют под известные
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
09.01.2018, 15:01  [ТС]
Хорошая задачка, про склеивание строк

Добавлено через 23 часа 21 минуту
задача на определение количества нулей в конце полученного факториала, исходя из того, что:"количество нулей, которыми оканчивается k!, равно показателю степени при простом числе 5 в каноническом разложении факториала. Этот показатель находится по известной формуле [k/5]+[k/25]+[k/125]+"

Добавлено через 5 минут
Вычисление самого факториала для больших чисел здесь
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*class FactZerooMetod1 - вычисляет факториал числа i=q,
 * или ряда чисел по заданным значениям i & q*/
 
import java.util.*;
import java.math.BigInteger;
 
public class FactZerooMetod1 {
    
    
    protected static ArrayList table = new ArrayList(); //Создается кэш в oбьекте ArrayList
                                                        //похож на массив, но может разрататься до любого размера
    static {table.add(BigInteger.valueOf(1));}          // Создаем кэш, инициализируем первый элемент - 1
                                    
                             /* Метод factorial()  использующий обьекты  BigInteger,
                              * сохраняемые в ArrayList*/
    
    public static synchronized BigInteger factorial (int x) {
        if (x<1)            
            throw new IllegalArgumentException ( "Х должен быть больше 0!!");
    for(int size = table.size(); size<=x; size ++)
    {   
    BigInteger lastfact = (BigInteger)table.get(size-1);
    BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(size));
    table.add(nextfact);
    }
        
    return (BigInteger) table.get(x);   
        
    }
    
 
    
    
 
}
Добавлено через 15 часов 27 минут
Задача на массивы
условие:Вам задан массив с положительными числами и числом N.
* Вы должны найти N-ю степень элемента в массиве с индексом N.
* Если N находится вне массива, тогда возвращаем -1.
* Не забывайте, что первый элемент имеет индекс 0
пример: array = [1, 2, 3, 4] и N = 3, то результат равен 4 ^ 3 == 64;
array = [1, 2, 3] и N = 3, но N вне массива, поэтому результат равен -1.

класс Main:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MassaNMain {
 
    public static void main(String[] args) {
        
        int n =0;
        int[] mass = {1, 2, 3, 4};
        
        int result =MassaNMetod.metod1(n, mass);
        System.out.println(n + "-й элемент массива в " + n + "-й степени равен " + result);
        
        }
    
 
}
класс Metod:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MassaNMetod {
 
    public static int metod1(int n, int[] mass) {
        
        int result = (n >= 0 && n < mass.length) ? (int) Math.pow(mass[n], n) : 1;
        return result;
        /* if (n >= mass.length) {
              int result = -1;
              return (result);
            } else {
 
              int result = (int) Math.pow(mass[n], n);
 
              return (result);
            }*/
    }
 
}
Удачи
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
30.01.2018, 23:52  [ТС]
Хорошая задача
Кликните здесь для просмотра всего текста
Общее задание
Вводится целое число N (1<=N<=9), а выводится несколько строк с числами, которые образуют определенный «узор». «Узор» задается вариантом. «Узор» создается использованием вложенных циклов.
В варианте показан узор при введенном N=5.
Таблица 5.1
Варианты задач C
Вариант
Рисунок
Вариант
Рисунок
0
5
4 5
3 4 5
2 3 4 5
1 2 3 4 5
1
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
2
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
3
5 4 3 2 1
5 4 3 2
5 4 3
5 4
5
Вариант
Рисунок
Вариант
Рисунок
4
5
5 4
5 4 3
5 4 3 2
5 4 3 2 1
5
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
7
5 5 5 5 5
5 5 5 5
5 5 5
5 5
5
8
5
5 5
5 5 5
5 5 5 5
5 5 5 5 5
9
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
10
5
4 5
3 4 5
2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
11
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
12
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
13
5
4 5 4
3 4 5 4 3
2 3 4 5 4 3 2
1 2 3 4 5 4 3 2 1
14
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
15
5
5 4 5
5 4 3 4 5
5 4 3 2 3 4 5
5 4 3 2 1 2 3 4 5
16
5 4 3 2 1
5 4 3 2
5 4 3
5 4
5
5 4
5 4 3
5 4 3 2
5 4 3 2 1
17
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5

Решение здесь
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
02.02.2018, 20:27  [ТС]
Согласование окончаний наименования с количеством (Про грибы.)
/*Для введенного числа k вывести фразу «Мы нашли k грибов в лесу»,
* согласовав слово «гриб» с числом k.*/

решение
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package Variant_A;
/*Для введенного числа k вывести фразу «Мы нашли k грибов в лесу», 
 * согласовав слово «гриб» с числом k.*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Gribki {
 
    public static void main(String[] args) throws IOException {
        
        BufferedReader br=new BufferedReader (new InputStreamReader (System.in));
        System.out.println ("Введите количество грибов: ");
        String s = br.readLine();
        int t = Integer.parseInt(s);
        
        int X = Gribki.m2 (t);
//      System.out.println(X);
        
        if (X==0 || X>=5)
        {
            System.out.println("Вы собрали "+t+" грибов!");
        }
        else if (X==1 )
        {
            System.out.println("Вы собрали "+t+" гриб!");
        }
        else {System.out.println("Вы собрали "+t+" гриба!");}
    }
 
    private static int m2(int t) {
        String strNum = String.valueOf(t);
        String [] massNum=strNum.split("");
        int [] NumMass = new int [massNum.length];
        for (int i =0; i<massNum.length; i++)
            { 
            NumMass[i]=Integer.parseInt(massNum[i]);
             }
        return NumMass[NumMass.length-1];
    }
 
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.02.2018, 20:49
Java
1
2
3
4
private static int m2(int t) {
        String str = String.valueOf(t);
        return Integer.parseInt(String.valueOf(str.charAt(str.length()-1)));
    }
1
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
02.02.2018, 20:55  [ТС]
Упс.
Красиво.
Спасибо.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.02.2018, 20:57
Лучший ответ Сообщение было отмечено Сергей_СПб как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Введите количество грибов: ");
        String s = "Вы собрали " + br.readLine() + " гриб";
        int t = Integer.parseInt(String.valueOf(s.charAt(s.length() - 1)));
 
        if (t == 0 || t >= 5) {
            s += "ов!";
        } else if (t == 1) {
            s += "!";
        } else s += "а!";
        System.out.println(s);
    }
}
1
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
02.02.2018, 21:03  [ТС]
Смешно ему.
Зато я это сам написал.
iSmokeJC, огромное спасибо что заглядываешь, и тем более, что подправляешь.
Искренне благодарен. Но задачу про палиндромы ты по тихому замял, а?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.02.2018, 21:09
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
по тихому замял
лень
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
02.02.2018, 21:20  [ТС]
Я тоже неделю маялся вроде доделал, но теперь смотреть в ту сторону не могу - переел. Найду - выложу - глянь пожалуйста на досуге.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
02.02.2018, 22:05
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Java
1
2
3
4
private static int m2(int t) {
    String str = String.valueOf(t);
    return Integer.parseInt(String.valueOf(str.charAt(str.length()-1)));
}
Г-ди, что это за извращение?

Java
1
2
3
private static int lastDigit(int x) {
    return x % 10;
}
1
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
02.02.2018, 23:05  [ТС]
Согласен, идиотизм заразен.
Но как это выглядело красиво.
korvin_, спасибо
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.02.2018, 23:14
Цитата Сообщение от korvin_ Посмотреть сообщение
извращение
точняк!
0
 Аватар для Сергей_СПб
28 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 192
03.02.2018, 14:45  [ТС]
Зацепила тема про кафе. Реальная программа из жизни, а не просто сделайте то, измените это. Чайникам всегда хочется сделать что то настоящее и крутое. Но в той теме серьёзные разговоры про патерны... много непонятных буков. Попробуем все разжевать, осмыслить и написать с нуля, на классике, если это возможно, от простого - к сложного, так сказать. Присоединяйтесь.

Итак есть кафе.
Цитата Сообщение от HighPredator Посмотреть сообщение
Пусть мы имеем кафе-бар, т.е. типичное заведение, где есть бар со стойкой и столики с едой.
Спим и видим готовое приложение для такого заведения.

Действие 1. Обязательное. "Разработка ТЗ"
Действующие лица:
Кликните здесь для просмотра всего текста

Объекты либо постоянные субъекты: Столик (5 столов), // Барная стойка (1 стойка), // Касса
Официанты (3 ч), //Бармен (2 ч), Менеджер, Холодильник
Субъекты либо временные объекты: Посетитель, Меню, Чек за заказ, Средний чек столика,
Средний чек официанта, Средний чек за смену по кафе
Действия: Регистрация посетителя, № столика, заказ по меню, Регистрация официанта, Регистрация менеджера
Регистрация холодильника, Регистрация кассы.


Интерфейсы: Интерфейс[IF] заказа (Клиент, столик, время, меню, стоимость, полный чек)
IF Официанта (№№ столиков, меню, время выполнения заказов, полные чеки, средний чек). ,
IF Менеджера (№№ официантов, средних чеков)
IF по количеству продуктов, выгрузка продуктов по заказам)
IF кассы (первоначальная сумма, чек клиента, средний чек за смену, оплата клиента,
сдача, сумма в конце смены)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2018, 14:45
Помогаю со студенческими работами здесь

Пример из книги Д. Флэнагана
Здравствуйте, друзья. Помогите пожалуйста разобраться вот в чем: начал знакомиться с JS по книге Д.Флэнагана &quot;JavaScript подробное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
78
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru