Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
1

Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести слово NO

05.09.2013, 16:56. Просмотров 2290. Ответов 12
Метки нет (Все метки)

Вот условие.
Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести
слово NO.
Если корней бесконечное множество, то вывести MANY.
Если уравнение не имеет смысла, то вывести ERROR.
Если корень один, то в первую строку выходного файла нужно вывести число 1, а во
вторую – значение этого корня с точностью до 5 знаков после десятичной точки.
Если у уравнения два корня, то в первую строку нужно вывести число 2, а во вторую –
найденные корни в порядке возрастания их значений с точностью до 5 знаков после десятичной
точки.

C
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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
    {
 
        int a,b,c;
        float d,x1,x2;
 
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        
        scanf("%d %d %d ",&a,&b,&c);
 
        x1=0; x2=0;
        d=b*b-4*a*c;
 
        if(d<0)
            printf("No");
 
        if (a=0)
            {
                if(b=0)
                    printf("ERROR");
                else 
                    {
                        x1=-c/b;
                        printf("1\n");
                        printf("%.5f",x1);
                    }
            }
        else
        if (d==0)
            {
                x1=-b/(2*a);
 
                printf("1\n");
                printf("%.5f",x1);
            }
        
 
        if (d>0)
            {
                d=sqrt(d);
                x1=(-b+d)/(2*a);
                x2=(-b-d)/(2*a);
 
                printf("%f\n",d);
                printf("2\n");
                printf("%.5f",x1);
                printf("%.5f",x2);
            }
 
 
 
    }
Когда их бесконечное множество я так и не понял. Программа не работает. При числах 1 12 36 он выдает Integer division by zero, я так понимаю это деление на 0, а где оно, я не вижу. При отрицательном дискриминанте работает нормально. При числах 0 12 37 выдает
12.000000
2
-1.#IND0-1.#INF0

В общем я не понимаю, что не нравится. Помогите пожалуйста.

Добавлено через 21 минуту
Нашел кучу ошибок, исправил, вроде работает, но некоторые тесты не проходит.

C
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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
    {
 
        float a,b,c,d,x1,x2;
 
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        
        scanf("%f %f %f ",&a,&b,&c);
 
        d=b*b-4*a*c;
 
        if(d<0)
            printf("No");
 
        if (a==0)
            {
                if(b==0)
                    printf("ERROR");
                else 
                    {
                        x1=-c/b;
                        printf("1\n");
                        printf("%.5f",x1);
                    }
            }
        else
        {
            if (d==0)
            {
                x1=-b/(2*a);
 
                printf("1\n");
                printf("%.5f",x1);
            }
        
 
        if (d>0)
            {
                d=sqrt(d);
                x1=(-b+d)/(2*a);
                x2=(-b-d)/(2*a);
 
                printf("2\n");
                printf("%.5f %.5f",x1,x2);
            }
        }
 
 
    }
Добавлено через 25 минут
Тему можно закрывать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 16:56
Ответы с готовыми решениями:

Создать программу, которая будет сообщать на экран, сколько корней имеет квадратное уравнение ax²+bx+c=0.
Создать программу, которая будет сообщать на экран, сколько корней имеет квадратное уравнение...

Выяснить, имеет ли вещественные корни уравнение ax2 + bx + c=0, и если имеет, то напечатать отдельно целые и дробные части корней.
Здравствуйте! Помогите с программой: Выяснить, имеет ли вещественные корни уравнение ax2 + bx +...

В выходной файл вывести уравнение с заменой x
&quot;Уравнение для 5 класса&quot; (20 баллов) Имя входного файла: in.txt Имя выходного файла: out.txt...

Составить квадратное уравнение, с вычислением дискриминанта и корней
Снова здравствуйте! задали задание по функциям, составить квадратное уравнение, с вычислением...

Проверить, имеет ли квадратное уравнение действительные корни
составьте программу, определяющую, пройдет ли график функции у=5(х (в квадрате))-7х+2 через...

12
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,242
05.09.2013, 17:27 2
Цитата Сообщение от Mil_OK Посмотреть сообщение
Когда их бесконечное множество я так и не понял.
- могу помочь: у уравнения
0*x^2+0*x+0=0 множество корней бесконечно (корень - любое вещественное число)
1
Somebody
3101 / 1622 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
05.09.2013, 17:46 3
Цитата Сообщение от Catstail Посмотреть сообщение
- могу помочь: у уравнения
0*x^2+0*x+0=0 множество корней бесконечно (корень - любое вещественное число)
Но это уравнение не квадратное.
0
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,242
05.09.2013, 18:03 4
Цитата Сообщение от Somebody Посмотреть сообщение
Но это уравнение не квадратное
- как это? Квадратное с нулевыми коэффициентами.
0
05.09.2013, 18:03
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10517 / 6221 / 1563
Регистрация: 25.07.2009
Сообщений: 11,844
05.09.2013, 18:08 5
Цитата Сообщение от Catstail Посмотреть сообщение
Квадратное с нулевыми коэффициентами.
Первый коэффициент (который при х в квадрате) не может быть нулём, иначе это и в самом деле не квадратное уравнение...
1
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,242
05.09.2013, 18:35 6
Полиномиальное уравнение имеет вид P(x)=0 (а коэффициенты могут быть любыми). Если же не учитывать нулевые коэффициенты, то квадратное уравнение не может иметь бесконечно много решений. Но все это относится к уравнениям, как к математическим объектам.

А ТС нужно написать программу. И эта программа принимает три коэфф-та (a, b и c). И пользователь вполне может задать их нулевыми. Это тот самый случай, на который я и обратил внимание TC. И, полгаю, что я прав. (Тем более, что в задании такой случай предусмотрен).
0
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
05.09.2013, 18:46  [ТС] 7
Цитата Сообщение от Catstail Посмотреть сообщение
Полиномиальное уравнение имеет вид P(x)=0 (а коэффициенты могут быть любыми). Если же не учитывать нулевые коэффициенты, то квадратное уравнение не может иметь бесконечно много решений. Но все это относится к уравнениям, как к математическим объектам.

А ТС нужно написать программу. И эта программа принимает три коэфф-та (a, b и c). И пользователь вполне может задать их нулевыми. Это тот самый случай, на который я и обратил внимание TC. И, полгаю, что я прав. (Тем более, что в задании такой случай предусмотрен).
Да, вы абсолютно правы, добавив этот случай, программа стала проходить тесты на сайте.


И ещё, реально ли это сделать без цикла?

Дано натуральное k.
Определить k-ю цифру в последовательности 110100100010000100000..., в которой
выписаны подряд степени 10.
1
Somebody
3101 / 1622 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
05.09.2013, 18:48 8
Вообще задача по виду олимпиадная, так что я бы в таком случае предположил, что все эти MANY и ERROR нужны для запутывания и запугивания пишущего решение.

Добавлено через 1 минуту
А если там есть тесты с a != 0, а в условии действительно написано "квадратное уравнение", то можно писать претензии админам/жюри.
0
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,242
05.09.2013, 19:12 9
Цитата Сообщение от Mil_OK Посмотреть сообщение
добавив этот случай, программа стала проходить тесты на сайте
- "подъезжая к сей станции, с моей головы слетела шляпа" - А.П. Чехов

Добавлено через 23 минуты
"И ещё, реально ли это сделать без цикла? Дано натуральное k. Определить k-ю цифру в последовательности 110100100010000100000..., в которой выписаны подряд степени 10".

Да, реально. Например, вот так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int dig10(int n, int c, int p)
{
    if (n == c+1)
        return 1;
    else
        if (c > n)
            return 0;
        else
            return dig10(n,c+p,p+1);
}
 
 
int main(int argc, char* argv[])
{
    int n;
    printf("n=");
    scanf("%d",&n);
    printf("dig=%d\n",dig10(n,0,1));
    
    return 0;
}
0
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
06.09.2013, 05:28  [ТС] 10
Цитата Сообщение от Catstail Посмотреть сообщение
- "подъезжая к сей станции, с моей головы слетела шляпа" - А.П. Чехов

Добавлено через 23 минуты
"И ещё, реально ли это сделать без цикла? Дано натуральное k. Определить k-ю цифру в последовательности 110100100010000100000..., в которой выписаны подряд степени 10".

Да, реально. Например, вот так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int dig10(int n, int c, int p)
{
    if (n == c+1)
        return 1;
    else
        if (c > n)
            return 0;
        else
            return dig10(n,c+p,p+1);
}
 
 
int main(int argc, char* argv[])
{
    int n;
    printf("n=");
    scanf("%d",&n);
    printf("dig=%d\n",dig10(n,0,1));
    
    return 0;
}
А не могли бы вы объяснить ход ваших мыслей?
0
Nameless One
Эксперт С++
5795 / 3444 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
06.09.2013, 05:35 11
Цитата Сообщение от Mil_OK Посмотреть сообщение
Если заданное квадратное уравнение не имеет корней, то в выходной файл нужно вывести
слово NO.
Если корней бесконечное множество, то вывести MANY.
Если уравнение не имеет смысла, то вывести ERROR.
Кто такие задания составляет? У квадратного уравнения всегда два корня.
0
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,242
06.09.2013, 10:16 12
Попробую. У рекурсивной программы dig10 три параметра: n - это номер цифры, которую нужно определить. Он не меняется. p - это очередной показатель степени десятки. c - длина отрезка цифр от 100 до 10p. При каждом входе в функцию анализируется следующее:

1) если n совпадает с длиной отрезка цифр от 100 до 10p + 1 , то n приходится на начало
очередной степени 10 -> искомая цифра = 1

2) если длина отрезка цифр от 100 до 10p больше n (т.е. n в середине) -> искомая цифра = 0

3) иначе - рекурсивный вызов с приращением c и p...

Поскольку n конечно, а с возрастает, алгоритм рано или поздно завершится.
0
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 16:12  [ТС] 13
Catstail, вот придумал решение. Главная формула, это частный случай суммы арифметической прогрессии, и формула дискриминанта.

C++ (Qt)
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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
    {
 
        unsigned int k;
        unsigned int d;
        double p;
 
 
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        
        scanf("%d",&k);
 
        d=1+4*(k-1)*2;
        p=sqrt((double)d);
 
        if ((p - ((int)p)) == 0)
            printf("1");
        else 
            printf("0");
                
    }

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
12.09.2013, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 16:12

Выяснить, имеет ли квадратное уравнение действительные корни
Даны дейчтвительные числа a,b,c. Выяснить, имеет ли уровнение a(x)квадрат + bx + c = 0...

Проверить имеет ли квадратное уравнение вещественные корни
Проверить истинность высказывания: &quot;Квадратное уравнение с данными коэффициентами A, B, C имеет...

Выяснить, имеет ли квадратное уравнение действительные корни
Помогите пожалуйста, очень нужно, заранее благодарю! Условный оператор. 11. Даны действительные...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru