С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23

Как посчитать факториал, число Фибоначчи и решить квадратное уравнение?

25.10.2016, 21:08. Показов 1777. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый Вечер. У меня есть код.
Никак не получается сделать так, как я хочу. Насколько я понял, нужно это всё через функцию/метод реализовывать, так?
Строка 87, см. комментарий. Задание школьного уровня , но всё же.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.company;
import java.util.Scanner;
import java.util.concurrent.Callable;
 
 
public class Main {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
 
        System.out.println("Добрый День, сегодня 31-ое число, поэтому нужно сдать программу\nЕсть 3 стула:  " +
                "\n  *Стул 1 вычисляет последовательность Фибоначи \n  *Стул 2 считает факториал числа\n  *Стул 3 решает квадратное уравнение" +
                "с заданными коэффициентами \nВыберите номер стула\nМожно пройти мимо них, для этого нажмите 0");
 
        int b = in.nextInt();
        
 
 
        if (b==1)
        {
            System.out.println("*Вы выбрали 'Вычисление последовательности Фибоначи'\n*Теперь введите число до которого считать" );
 
            int c=in.nextInt();
            int i=1, j=1,k;
            while(i<c)
            {
                k=i+j;
                i=j;
                j=k;
                System.out.println(j-i);
 
            }
 
 
        }
        else if (b==2)
        {
            System.out.println("*Вы выбрали 'Вычисление факториала числа'\n*Теперь введите число, факториал которого Вы хотите узнать") ;
 
            int q=in.nextInt();
            int n=1; // начинаем считать факториал с этого числа
            for(int v=1; v<=q; v++)
            {
                n=n*v;
 
 
            }
            System.out.println(n);
 
        }
        else if (b==3)
        {
            System.out.println("*Вы выбрали 'Решение квадратного уравнения'\n*Теперь введите коэффициенты при a, b , c \n " +
                    "коэффициенты могут быть дробными" );
            double xa=in.nextDouble();
            double xb=in.nextDouble();
            double xc=in.nextDouble();
            double x1,x2,x;
            double D;
            int u=1;
 
 
            D=(xb*xb)-(4*xa*xc);
            if (D>0)
            {
                x1=(-xb+Math.sqrt(D))/(2*xa);
                x2=(-xb-Math.sqrt(D))/(2*xa);
                System.out.println(x1);
                System.out.println(x2);
 
            }
            else if (D==0)
            {
                x=(-b)/2*xa;
                System.out.println(x);
            }
            else if (D<0)
            {
                System.out.println(" Дискриминант при таких коэффициентах отрицательный");
            }
 
 
        }
        else if (( b!=1 ) && (b!=2) && (b!=3) && (b!=0))
        {
            System.out.println("Стула всего 3! \nВведите число ещё раз(Точнее, запустите программу и введите число ещё раз");
            // вот тут нужно, чтобы программа опять ждала ввода числа b. "int b = in.nextInt(); " не получается 
 
 
 
 
        }
        else if (b==0)
        {
            System.out.println("Удачного пути " );
            System.exit(0);
        }
    }
}
Извините за такой неаккуратный код, но вроде бы всё читаемо. Пометил комментарием(87 строка) то, что нужно сделать, ибо так проще.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2016, 21:08
Ответы с готовыми решениями:

Как решить квадратное уравнение
Ребята, помогите составить программы по двум схемам. Сама я полный ноль в этом. Вторая схема - квадратное уравнение. Заранее благодарна!!!

Как решить квадратное уравнение?
Доброго времени суток, форумчане. Прошу помощи. Необходимо переписать код с c# в python. Пробовал преобразовывать через sharpdevelop, но...

Решить квадратное уравнение
Помогите решить задачу пожалуйста, без решения этой задачи мне никак: Решить квадратное уравнение. Спасибо заранее...

8
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
25.10.2016, 21:28
Цитата Сообщение от Huvi Посмотреть сообщение
Задание школьного уровня
Где задание то?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
25.10.2016, 21:42  [ТС]
"Считываешь число с клавиатуры:
Если 1, то считываешь еще одно число (какой макс элемент) и ищешь послед. Фибоначи.

Если 2. То ищешь факториал, Тоже спрашиваешь какого числа.

Если 3, то решаешь квадратное уравнение. Спрашиваешь у пользователя коэффициенты при а, в и с."
Это всё я сделал, затем оформил "типа меню" и даже выход с программы на 0. Теперь нужно, чтобы , если пользователь вводил число отличное от 1, 2 , 3 или 0 получал сообщение "Стульев всего 3, либо можно пройти мимо них(что-то типа такого) , введите число ещё раз" И чтобы программа ждала ввода числа b, которое пользователь вводил самым первым. Надеюсь адекватно объяснил.

Добавлено через 7 минут
Заголовок темы "кто-то" поменял. Суть проблемы описана выше. Всё, что в заголовке решено и работает.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.10.2016, 22:15
В цикл положи, напрмиер.
Поискал бы заодно, как крутые пацаны факториалы и фибоначи вычисляют. Ну и заодно на BigInteger посмотри.

Добавлено через 29 секунд
Ну и разложи же все по функциям.

Добавлено через 43 секунды
Цитата Сообщение от Huvi Посмотреть сообщение
in.nextInt();
что будет, если я введу "Z"?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
25.10.2016, 22:45  [ТС]
Да в том-то и дело, что функции/методы пока не проходили. У меня только базовые знания - как считать число с клавиатуры , вывести на экран и так далее.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.10.2016, 22:55
Цитата Сообщение от Huvi Посмотреть сообщение
что функции/методы пока не проходили
И чего тебя пороть будут, если будешь немного вперед программы идти и писать нормальный код?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
26.10.2016, 00:18  [ТС]
ну вот, я посмотрел уроки по методам. Разве мой код будет проще при использовании методов?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2016, 01:17
Либо у тебя написано factorial(n), либо 20 строк кода. Что по твоему проще читается?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
28.10.2016, 18:55  [ТС]
Лол, я настолько заморочился, что сделал кучу фишек у программы, ы.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.company; // FINAL VERSION, DO NOT TOUCH!!!!!
import java.util.Scanner;
 
 
public class Main {
 
    public static void main(String[] args) {
        System.out.println("Добрый День, сегодня 31ое число. У меня было много времени, поэтому я реализовал прогу методами. \n " +
                "Про 4 функции программы Вы знаете, всё как обычно- \n 1-Факториал \n 2-Последовательность Фибоначчи \n " +
                "3-Квадратное уравнение, и 0 - выход из программы \n\n " +
                "P.S: Советую ввести целое число, отличное от 1, 2 , 3 или 0 :) Чисто для теста.");
 
 
        Scanner prog = new Scanner(System.in);
        int a = prog.nextInt();
        while ((a != 1) && (a != 2) && (a != 3) && (a != 0)) 
        {
            System.out.println("У программы нет функции на такую цифру. Попробуйте ещё раз !");
            a = prog.nextInt();
        }
        if (a == 1)
        {
            Main.FactorialII();
        }
        else if (a == 2)
        {
            Main.Febonacci();
        }
        else if (a == 3)
        {
            Main.QuadricE();
        }
        else if (a == 0)
        {
            Main.Quit();
        }
 
        /*else if ((a!=0)&&(a!=1)&&(a!=2)&&(a!=3))
        {
            MissClick.Miss();
 
        }*/
 
        // write your code here
    }
 
    /*public static void Factorial() {
        System.out.println("Вы выбрали 'Посчитать факториал', Теперь введите число, факториал которого хотите посчитать .");
        Scanner fac = new Scanner(System.in);
        int fact = fac.nextInt();
        int n = 1;
        for (int v = 1; v <= fact; v++) {
            n = n * v;
 
        }
        System.out.println(n);
 
    }*/
 
 
    public static void Febonacci() {
        System.out.println("Вы выбрали  'последовательность Фибоначчи'. Введите число, перед которым должна остановиться последовательность");
        Scanner feb = new Scanner(System.in);
        int febo = feb.nextInt();
        while (febo<=0){
            System.out.println("Последовательность состоит из положительных чисел, Эх вы... TRY AGAIN");
            febo = feb.nextInt();
        }
        if (febo>0){
        int i = 1, j = 1, k;
        while (i < febo) {
            k = i + j;
            i = j;
            j = k;
            System.out.println(j - i);
 
        }
        }
    }
 
    public static void QuadricE() 
    {
        System.out.println("Вы выбрали 'Решение квадратного уравнения'\n*Теперь введите коэффициенты при a, b , c \n " +
                "коэффициенты могут быть дробными.\n");
        Scanner coef = new Scanner(System.in);
        double xa = coef.nextDouble();
        double xb = coef.nextDouble();
        double xc = coef.nextDouble();
        double x, x1, x2, D;
        D = (xb * xb) - (4 * xa * xc);
        if (D > 0) 
        {
            x1 = (-xb + Math.sqrt(D)) / (2 * xa);
            x2 = (-xb - Math.sqrt(D)) / (2 * xa);
            System.out.println("х1=" + x1);
            System.out.println("х2=" + x2);
 
        }
        else if (D == 0) 
        {
            x = (-xb) / 2 * xa;
            System.out.println("x=" + x);
        }
        else if (D < 0) 
        {
            System.out.println(" Дискриминант при таких коэффициентах отрицательный.\n ");
        }
    }
    public static void Quit() {
        System.out.println("BB");
        System.exit(0);
 
    }
    public static void JustFactorial() {
 
        System.out.println("Вы выбрали 'Посчитать факториал и вывести факториал сразу', " +
                "Теперь введите число, факториал которого хотите посчитать .");
        Scanner fac = new Scanner(System.in);
        int fact = fac.nextInt();
        int n = 1;
        for (int v = 1; v <= fact; v++) 
        {
            n = n * v;
        }
        System.out.println(n);
    }
    public static void allFactorial() {
        System.out.println("Вы выбрали 'Посчитать факториал с выводом всех элементов последовательно' Теперь введите число, факториал" +
                " которого хотите узнать");
        Scanner factorial= new Scanner(System.in);
        int fact = factorial.nextInt();
        int n = 1;
        for (int v = 1; v <= fact; v++) 
        {
            n = n * v;
            System.out.println(n);
        }
    }
    public static void FactorialII()
 
        {
            System.out.println("Вы выбрали 'Факториал числа'. Введите тип вывода факториала- \n 1- Сразу \n 2- Последовательно");
            Scanner fact = new Scanner(System.in);
            int fc = fact.nextInt();
            while ((fc!=1)&&(fc!=2)) 
            {
                    System.out.println("Нет такой функции :< Try again ");
                    fc = fact.nextInt();
            }
                if (fc == 1) 
                {
                Main.JustFactorial();
                }
                else if (fc == 2) 
                {
                Main.allFactorial();
                }
        }
}
Вот как-то так, спасибо , кто подсказал мне как-то изучить методы и реализовать циклы при считывании переменных с клавиатуры. Надеюсь, что я всё правильно сделал! Извиняюсь за отступы и так далее, очень долго править, на то это и быдлокод :\
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2016, 18:55
Помогаю со студенческими работами здесь

Решить квадратное уравнение
Ребята, помогите пожалуйста решить контрольную на языке Турбо Бейсик: 1. Вычислить сумму нечетных элементов натурального ряда...

Решить квадратное уравнение
Задание: квадратное уровнение А*х*х+В*х+С=0 Задача допускает 5 вариантов решения в зависимости от численного значения коэффициентов: ...

Решить квадратное уравнение
Никак не могу понять в чём ошибка... Помогите, желательно с объяснением ошибки. Спасибо. program progect2; var A, B, C,...

решить квадратное уравнение
Помогите, пожалуйста, решить квадратное уравнение 6x^2 + 5x + 1 = 0 с помощью функции Поиск решений в среде Excel.

Решить квадратное уравнение
Решите пожалуйста № 4 на Visual Basic


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru