Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Даны натуральные числа N, A1, …, AN. Найти те члены Ai , которые обладают тем свойством, что корни уравнения x2 + Aix – 5 действительны и положительны - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ссылка на указатель http://www.cyberforum.ru/cpp-beginners/thread193940.html
Почему не работает такая конструкция? void SwapInt(void* p1, void* p2) { int* & tmp=static_cast<int*>(p2); } и как исправить?
C++ Удаление в АВЛ Дереве. Всем доброго времени суток. Очень прошу помочь с АВЛ деревом. Есть программа. Только тестах одного типа вылетает. Не могу понять почему. В коде содержаться подробные комментарии. Файл avl.h: ... http://www.cyberforum.ru/cpp-beginners/thread193933.html
ошибка в функции сложение по модулю два C++
Доброго времени суток, форумчане! в функции perv() закралась ошибка. мне нужно сложить по модулю два первую строку массива "а" с ключом key. однако, программа доходит до этого этапа и выдаёт окошко...
Хэш функция C++
Нашел хэш функцию в нете,помогите разабратся че она делает unsigned HashData(char * DATA, int Length) { unsigned hash = 0; while (Length--) { hash =hash+ (*(char*)DATA++); ...
C++ Подскажите кто может и найдите ошибки в программе)) http://www.cyberforum.ru/cpp-beginners/thread193917.html
#include <stdio.h> #include <conio.h> #define ROWS 3 #define COLS 3 void Changenrow(int, int , int, int; void dobaviti(int&, int ; void main(){ unsigned key; do { clrscr();
C++ Алгоритм Евклида Привет всем. Задача такова, надо написать программу на С++ для поиска Самого Малого Кратного (СМК) по алгоритму Евклида. Дано три числа: a, b, c найти их самое малое кратное. Просьба, чтобы... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.11.2010, 02:55
В коде у вас была пара логических и арифметических ошибок - это я поправил.

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
58
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
 
const int N = 10;
 
int main()
{
    double D[N], a = 1, c = -5, x1, x2;
    double A[N];
    int i;
  
    /* Вывод подсказки */ 
    printf("kvadratnoe uravnenie\n");
    printf("x^2 + A[N]x - 5 = 0\n");
    
    for (i = 0; i < N; i++)
    {
        printf("Vvedite A[%d] : ", i);
        scanf("%lf", &A[i]);
    }
  
    /* Расчёт дискриминанта */
    for (i = 0; i < N; i++)
    {
        D[i] = A[i] * A[i] - 4 * a * c;
        printf("D[%d] : %f\n", i, D[i]);
    }
    
    for (i = 0; i < N; i++)
    {
        /* Расчёт корней и их вывод на экран */
        if (D[i] > 0) // Положительный дискриминант
        {
            x1 = (-A[i] + sqrt(D[i])) / (2 * a); // sqrt(D) - это 
            x2 = (-A[i] - sqrt(D[i])) / (2 * a); // квадратный корень из D
                                 // (функция из math.h)
            if (x1 > 0 && x2 > 0)
                printf("2 kornia[%d]: %f i %f\n", i, x1, x2);
        }
        else
        {
            if (D[i] == 0) // Нулевой дискриминант
            {
                x1 = -A[i] / (2 * a);
                printf("1 k[%d]: %f", i, x1);
            }
            else // Отрицательный дискриминант
                printf("kornei net");
        }
    }
 
    printf("\n");
 
    getch();
    return 0;
}
Но проблема в другом - в самом задании. А именно в следующем: дискриминант нашего уравнения D = (-b) * (-b) - 4 * a * c = / поскольку a и c нам известны и равны соответственно 1 и -5, то / = b^2 + 20
В таком случае корни нашего уравнения равны x1 = (-b - sqrt(D)) / (2 * a) и x2 = (-b + sqrt(D)) / (2 * a)
По условию они должны быть положительны. Нетрудно догадаться, что второй из них положителен всегда, т.е. при любом b (ведь sqrt(b^2 + 20) заведомо больше b, а, значит, их разность положительна). Осталось доказать, что второй корень тоже может быть положителен. Для этого достаточно, чтобы числитель его был положителен, т.е. чтобы -b - sqrt(b^2 + 20) > 0. Это иррациональное неравенство, и, чтобы его решить, достаточно решить простую систему неравенств:

http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  & {b}^{2} + 20 \geq 0, \\  & -b > 0, \\   & {b}^{2} + 20 < {b}^{2} \end{cases}

Казалось бы, всё хорошо. Первое неравенство (после преобразования к виду b^2 >= -20), очевидно, имеет бесконечное множество решений. Второе (b < 0) - говорит само за себя - b должно быть меньше нуля. А вот третье... В обеих частях неравенства имеем право уничтожить b^2. Но тогда получим 20 < 0, что бессмысленно, т.е. решений не имеет. А, следовательно, решений не имеет и вся система, т.е. ни при каком b второй корень исходного уравнения положительным быть не может.

Извиняюсь, если что, неравенства (а, тем более, их системы) последний раз решал года три назад, может, какую важную вещь попутал и решения есть... Но пока так.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru