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

Посчитать сумму элементов массива, при которых квадратное уравнение имеет решение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Открытие и побитовое чтение jpeg-файла http://www.cyberforum.ru/cpp-beginners/thread252344.html
Здравствуйте уважаемые участники форума. Прошу подсказать, как лучше справиться с задачей. Собственно нужно открыть jpeg-файл и прочитать оттуда разную информацию, для того чтобы потом использовать ее для создания другого файла, тоже jpeg. Хочется услышать вообще идею, как это делается. Как обычно обрабатываются файлы такого вида? Я иду по такому пути: 1. Открываю файл типа FILE *file...
C++ алгоритм форда белмана Помогите пожалуйста разобраться с этим алгоритмом! я понял его смысл но не до конца. например такой вопрос: как задаётся в нем граф? если можете скиньте пожалуйста код на c++ http://www.cyberforum.ru/cpp-beginners/thread252334.html
_itoa,вопрос по char* C++
В MSDN описана функция char *_itoa( int value, char *str, int radix ); В примере
исключения C++
Помогите пожалуйста создать мнoгoурoвнeвую иeрaрхию нaслeдoвaния клaссoв исключeния для сoздaния ситуaции, в кoтoрoй вaжнa пoслeдoвaтeльнсoть oбрaбoтчикoв исключeний.
C++ как заставить С++ и С# работать вместе? http://www.cyberforum.ru/cpp-beginners/thread252311.html
Здравствуйте! Хотелось бы научится писать проги со совмещение С++ и шарпа... Посоветуйте что-то почитать или хотябы покажите код как написаная на Си своп_инт(поменять местами 2 инта) и консоль апликейшн на шарпе работают вместе...
C++ Момогите с условием Посчитать количество слов заданных с клавиатуры в строке. Есть предположения программы, но она не работает. Исправте и допишите программу пожалуйста. Или хотя бы подкинте идею решения программы. #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
05.03.2011, 15:03     Посчитать сумму элементов массива, при которых квадратное уравнение имеет решение
Если имеются в виду целые корни, то вот так можно сделать:
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
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
/////////////////////////////////////////////////////////////////////////////////////////
//Дан массив a (а1,а2,а3...аn)
//Найти сумму тех элементов,при которых уравнение X^2+3a[i]x+5=0 имеет целые корни.
//Если таких элементов нет, вывести 0.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
/////////////////////////////////////////////////////////////////////////////////////////
T_nums  get_random_arr
    (
        T_num  size,
        T_num  mod
    )
{
    struct  T_gen_num_for_mod
    {
        T_num  mod_;
        //-------------------------------------------------------------------------------
        T_gen_num_for_mod(T_num  mod) : mod_(mod)
        {}
        //-------------------------------------------------------------------------------
        T_num  operator()()
        {
            return  rand() % (mod_ * 2 + 1) - mod_;
        }
    };
 
    T_nums  nums;
    std::generate_n(std::back_inserter(nums), size, T_gen_num_for_mod(mod));
    return  nums;
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_nums(const T_nums&  nums)
{
    std::copy(nums.begin(), nums.end(), std::ostream_iterator<T_num>(std::cout, "\t"));
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    srand(static_cast<unsigned>(time(0)));
    const T_num ARR_SIZE =  40;
    const T_num ARR_MOD =   10;
 
    T_nums  nums = get_random_arr(ARR_SIZE, ARR_MOD);    
    std::cout << "Исходный массив A: "
              << std::endl;    
    print_nums(nums);
    std::cout << std::endl;
 
    struct  T_root_is_not_int
    {
        bool  operator() (T_num  num)
        {
            T_num  D = (3 * num) * (3 * num) - 4 * 1 * 5;
            if(D < 0) 
            {
                return  true;
            }
            else
            {                
                T_num  sqrt_int_D  = static_cast<T_num>(pow(D, 0.5));
                T_num  d           = 0;
                if(D == sqrt_int_D * sqrt_int_D)
                {
                    d = sqrt_int_D;
                }
                else if(D == (sqrt_int_D + 1) * (sqrt_int_D + 1))
                {
                    d = sqrt_int_D + 1;
                }
                else  return  true;
 
                return (3 * num) % 2 != d % 2;
            }
        }
    };
 
    T_nums  good_nums;
    std::remove_copy_if(nums.begin(), nums.end(), std::back_inserter(good_nums),
                        T_root_is_not_int());
 
    std::cout << "Элементы массива A, для которых уравнение x^2 + 3*A[i]*x + 5 = 0 "
              << std::endl
              << "имеет целые корни:"
              << std::endl;
    print_nums(good_nums);
    std::cout << std::endl
              << "Сумма этих элементов равна "
              << std::accumulate(good_nums.begin(), good_nums.end(), 0)
              << "."
              << std::endl;
}
 
Текущее время: 20:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru