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

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

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

Author24 — интернет-сервис помощи студентам
Добрый Вечер. У меня есть код.
Никак не получается сделать так, как я хочу. Насколько я понял, нужно это всё через функцию/метод реализовывать, так?
Строка 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2016, 21:08
Ответы с готовыми решениями:

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

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

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

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

8
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
25.10.2016, 21:28 2
Цитата Сообщение от Huvi Посмотреть сообщение
Задание школьного уровня
Где задание то?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
25.10.2016, 21:42  [ТС] 3
"Считываешь число с клавиатуры:
Если 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 4
В цикл положи, напрмиер.
Поискал бы заодно, как крутые пацаны факториалы и фибоначи вычисляют. Ну и заодно на BigInteger посмотри.

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

Добавлено через 43 секунды
Цитата Сообщение от Huvi Посмотреть сообщение
in.nextInt();
что будет, если я введу "Z"?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
25.10.2016, 22:45  [ТС] 5
Да в том-то и дело, что функции/методы пока не проходили. У меня только базовые знания - как считать число с клавиатуры , вывести на экран и так далее.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.10.2016, 22:55 6
Цитата Сообщение от Huvi Посмотреть сообщение
что функции/методы пока не проходили
И чего тебя пороть будут, если будешь немного вперед программы идти и писать нормальный код?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
26.10.2016, 00:18  [ТС] 7
ну вот, я посмотрел уроки по методам. Разве мой код будет проще при использовании методов?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2016, 01:17 8
Либо у тебя написано factorial(n), либо 20 строк кода. Что по твоему проще читается?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 23
28.10.2016, 18:55  [ТС] 9
Лол, я настолько заморочился, что сделал кучу фишек у программы, ы.
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
28.10.2016, 18:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2016, 18:55
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru