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

Найти элемент массива с максимальной суммой делителей - C++

Восстановить пароль Регистрация
 
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
20.06.2012, 09:02     Найти элемент массива с максимальной суммой делителей #1
Дан целочисленный массив A[N].Найти элемент массива с максимальной суммой делителей. Вывести на экран значение найденного элемента и его порядковый номер в массиве

В чём ошибка?

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 <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int n,p=1,sum=0,max=0,i,j;
 
    cout << "Vvedite razmer: ";
    cin >> n;
    int *aN=new int [n];
 
 
    for (i=0; i<n; i++)
    {cout<<"VVedite znachenie";
 
    cin>>aN[i];}
    for (i=0; i<n; i++)
 
    {
        //aN[i]=1+rand()%100;
        
    
        for (j=aN[i]; j>1; j--)
        {
            if (aN[i]%j==0)
            {
               sum+=aN[i]/j;
            }
 
        }
        
        if (max<sum)
        {
           max=sum+aN[i];
           p=i+1;
 
           
        }
       cout << " " << aN[i];
        sum=0;   
 
 
    }
    cout << endl;
    cout << "Znachenie: " << max << endl;
    cout << "Nomer: " << p << endl;
 
           
        
    system ("pause");       
               
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2012, 09:02     Найти элемент массива с максимальной суммой делителей
Посмотрите здесь:

Найти натуральное число от 1 до 10000 с максимальной суммой делителей. C++
Найти элемент массива с максимальной суммой делителей C++
Найти элемент массива с макс. суммой делителей C++
C++ Найти число с максимальной суммой делителей
Найти натуральное число из заданного диапозона с максимальной суммой делителей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
20.06.2012, 10:39     Найти элемент массива с максимальной суммой делителей #2
Цитата Сообщение от Larkin888 Посмотреть сообщение
for (j=aN[i]; j>1; j--)
здесь в принципе можно было написать j>=1,тогда в
Цитата Сообщение от Larkin888 Посмотреть сообщение
if (max<sum)
* * * * {
* * * * * *max=sum+aN[i];
не нужно было добавлять aN[i]
ну а так код выглядит правильным,в чём именно проблема?не компилируется или выводит не то значение?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
20.06.2012, 11:13     Найти элемент массива с максимальной суммой делителей #3
Мой вариант
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
#include <iostream> 
#include <ctime> 
#include <iomanip>
#include <cstdlib> 
using namespace std; 
 
int main() 
{   
    setlocale(0, "rus");
    srand((unsigned) time(0));
    const int size = 10;   // размер массива
    int array[size];  
    int summa[size] ={ 0 }; // массив сумм
    int max_sum;            // макс сумма
    int index_max;          // индекс макс элемента
    int i, j; 
 
    for ( i = 0; i < size; i++) 
        array[i] = rand() % 20; // заполняем случайными числами
 
    for ( i = 0; i < size; i++) 
        cout << setw(3) << array[i] << " ";  // выводим массив на экран
    cout << endl;  
 
    for ( i = 0; i < size; i++) 
         
        for ( j = 2; j < array[i]; j++) // счтаем сумму делителей каждого элемента
            if(array[i] % j == 0) 
                summa[i] += j; 
         
 
 
    for ( i = 0; i < size; i++) 
        cout << setw(3) << summa[i] << " "; // выводим суммы
    cout << endl;   
 
    max_sum = summa[0];  
    index_max = 0;
 
    for ( i = 1; i < size; i++) // максимальная сумма
        if(max_sum < summa[i])  
        {
            max_sum = summa[i]; 
            index_max = i; 
        }
 
    cout << "Элемент с максимальной суммуй делителей это " << array[index_max] <<  
         "  Расположен " << "[" << index_max << "]" << endl; 
 
    system("Pause");
 
}
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
20.06.2012, 11:22     Найти элемент массива с максимальной суммой делителей #4
Цитата Сообщение от David Sylva Посмотреть сообщение
for ( j = 2; j < array[i]; j++) // счтаем сумму делителей каждого элемента
* * * * * * if(array[i] % j == 0)
* * * * * * * * summa[i] += j;
тут не учитывается,что делителями числа также являются и 1,и само это число
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
20.06.2012, 13:54  [ТС]     Найти элемент массива с максимальной суммой делителей #5
Цитата Сообщение от alexey31415 Посмотреть сообщение
здесь в принципе можно было написать j>=1,тогда в


не нужно было добавлять aN[i]
ну а так код выглядит правильным,в чём именно проблема?не компилируется или выводит не то значение?
Выводит не правильное значение...Например при вводе 1 2 3, он говорит, что у 2 элемента макс сумма делителей, равная 3.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
20.06.2012, 14:11     Найти элемент массива с максимальной суммой делителей #6
Цитата Сообщение от Larkin888 Посмотреть сообщение
if (aN[i]%j==0)
* * * * * * {
* * * * * * * *sum+=aN[i]/j;
* * * * * * }
нужно складывать не результат деления,а сами делители,так что aN[i]/ лишнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 14:17     Найти элемент массива с максимальной суммой делителей
Еще ссылки по теме:

C++ Процедуры и функции: Найти натуральное число из интервала [n1, n2] с максимальной суммой делителей
Найти число с максимальной суммой делителей C++
Определить число с максимальной суммой делителей C++

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

Или воспользуйтесь поиском по форуму:
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
20.06.2012, 14:17  [ТС]     Найти элемент массива с максимальной суммой делителей #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
нужно складывать не результат деления,а сами делители,так что aN[i]/ лишнее
Всё получилосЬ, спасибо=)
Yandex
Объявления
20.06.2012, 14:17     Найти элемент массива с максимальной суммой делителей
Ответ Создать тему
Опции темы

Текущее время: 17:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru