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

Поиск совершенного числа в массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считать длину строки текстового файла http://www.cyberforum.ru/cpp-beginners/thread1031583.html
Есть квадратная матрица, которая заполняется данными из файла. Если размерность матрицы больше, чем объём данных в файле, то нужно заполнить недостающие элементы матрицы случайными числами. Пытаюсь сделать так:cout<<"Введите размерность квадартной матрицы: "; cin>>s; int **mas = new int*; ifstream fs; fs.open("input.txt"); int a = fs.getline; if(s > a){ for(i = a + 1; i < s; i++)
C++ Где ошибка? Вот условие -"Ученик на свой ​​день рождения раздал ученикам класса конфеты, в том числе и себе. Ребятам давал четное количество, а девушкам нечетное количество. Подсчитать количество девушек и парней в классе. Формат входных данных Первая строка содержит общее количество учащихся, натуральное число N. В следующих строках количество розданных конфет. Все числа входного файла не превышают 1... http://www.cyberforum.ru/cpp-beginners/thread1031567.html
C++ Посчитать произведение положительных элементов в двумерном массиве
Народ, помогите сделать задание. Посчитать произведение положительных элементов в тех строках массива, в которых есть хотя бы два положительных элемента. Вывести номер строки и произведение.
C++ Программа для работы с БД, работа программы по сети
Здравствуйте форумчане, прошу помощи в следующей задаче. Я делаю Программу которая работает с БД, и мне бы хотелось организовать её работу по сети, т.е. мне необходимо что бы к базе данных имели доступ пользователи разных компьютеров. Сам я не знаю как такое провернуть, может быть вы мне подскажите какую-либо литературу или поможете мне своими знаниями(если можно подробнее), буду очень благодарен...
C++ Вывод специальных символов unicode в консоль http://www.cyberforum.ru/cpp-beginners/thread1031548.html
Подскажите, товарищи, как можно вывести специальные юникод символны в консоль? (например ☭ ±). Всё перепробовал, ответа так и не получил.
C++ Очистка буфера kbhit() Доброго времени суток! Вопрос в следующем. Как очистить буфер функции kbhit? Код такого рода: while (exit==0) { if (kbhit()) { switch (getch()) { ... подробнее

Показать сообщение отдельно
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
07.12.2013, 20:34     Поиск совершенного числа в массиве
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
// [url]http://www.cyberforum.ru/cpp-beginners/thread1031605.html[/url]
// [url]http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B2%D0%B5%D1%80%D1%88%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE[/url]
 
#include <iostream>
 
 
using namespace std;
 
int main(void)
{
    /* +++++++++++++++++++++++++++++++ */ // Телепаты гадают что тут.
 
    const long int mas[17] = {2, 4, 6, 9, 12, 80, 82, 90, 30, 38, 85, 88, \
                              130, 230, 230}; // 16 элементов для начала. 0-15.
 
    bool szFind = false; // Перменная для неудовлетворения решения.
 
    /* +++++++++++++++++++++++++++++++ */
    int n1 = 0, n2 = 0;
    do
    {
        //задаём диапазон исследуемых элементов
        cout<<"Введите n1 = ";
        cin>>n1;
        if ( n1 >= 0 && n1 <= 15 )
        {
            cout<<"Введите n2 = ";
            cin>>n2;
 
            if ( n2 < 0 || n2 > 15 )
            {
                 cerr << "n2 вышло за пределы массива! Пробуем занова!" << endl;
            };
        }
        else
        {
            cerr << "n1 вышло за пределы массива! Пробуем занова!" << endl;
        };
        if (n1>n2) cerr <<"n1 должно быть меньше n2!"<<endl;
    } while ( n1 < 0 || n1 > 15 || n2 < 0 || n2 > 15 || n1 > n2 );
 
    //находим совершенные числа
 
 
 
 
        long int x,i,j,p;
        for(i = mas[n1]; i <= mas[n2]; n1++){
            x = i;
            for(j = 1; j < x; j++){
                if(x % j == 0)
                    p+=j;
            }
            if(p == i)
            {
                cout<< "Число " << i << " совершенное\n";
                szFind = true; // Вот!
            };
            p = 0;i++;
        }
 
        if ( szFind == false ) cout << "\n\tВ указанном диапазоне нет совершенных чисел!\n" << endl;
 
    return 0;
}
 
/*
 * Совершенное числоМЃ (др.-греч. бјЂПЃО№ОёОјбЅёП‚ П„О*О»ОµО№ОїП‚) — натуральное число, равное сумме всех своих собственных делителей
 * (т. е. всех положительных делителей, отличных от самогоМЃ числа). По мере того как натуральные числа возрастают,
 *  совершенные числа встречаются всё реже.
 *
 * Совершенные числа образуют последовательность:
 *
 *   6, 28, 496, 8128, 33550336, 8589869056, 137438691328,
 *   2305843008139952128, 2658455991569831744654692615953842176,
 *   191561942608236107294793378084303638130997321548169216, … (последовательность A000396 в OEIS).
 */
Исходный диапазон не занию как править.
Вот вывод из консоли:
Bash
1
2
3
4
5
6
7
$ g++ -c search_cin_2.cpp -o s_2.o
$ g++ -o p2 s_2.o
$ ./p2
Введите n1 = 0
Введите n2 = 1
 
        В указанном диапазоне нет совершенных чисел!
Добавлено через 10 минут
Я тут кроссирую программу.
Походу где-то недоработака, но не пойму где...
В зависимости от выбранного диапазона решение меняется с правильного на неправильное.
То находятся числа, не заданные в массиве, то не находятся заданные совершенные...
 
Текущее время: 17:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru