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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
#1

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

20.06.2012, 09:02. Просмотров 656. Ответов 6
Метки нет (Все метки)

Дан целочисленный массив 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");       
               
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2012, 09:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти элемент массива с максимальной суммой делителей (C++):

Найти элемент массива с максимальной суммой делителей - C++
Помогите пожалуйста Дан целочисленный массив A.Найти элемент массива с максимальной суммой делителей. Вывести на экран значение...

Найти элемент массива с макс. суммой делителей - C++
Дан целочисленный массив A.Найти элемент массива с максимальной суммой делителей. Вывести на экран значение найденного элемента и его...

Найти число с максимальной суммой делителей - C++
Хелп плиз :) Нужна прога, которая находит натуральное число от 1 до 10000 с максимальной суммой делителей, предусмотреть функцию...

Найти число с максимальной суммой делителей - C++
Дано число N. Найти число из диапазона от 1 до N с максимальной суммой делителей (включая непростые делители, 1 и само число). Если таких...

Найти натуральное число от 1 до 10000 с максимальной суммой делителей. - C++
Не понимаю как решить))

Найти натуральное число из заданного диапозона с максимальной суммой делителей - C++
Найти натуральное число, лежащее в диапозоне от 1 до 10000 с максимальной суммой делителей. Почему программа не запускается? Что-то не...

6
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]
ну а так код выглядит правильным,в чём именно проблема?не компилируется или выводит не то значение?
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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");
 
}
0
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,и само это число
0
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
20.06.2012, 13:54  [ТС] #5
Цитата Сообщение от alexey31415 Посмотреть сообщение
здесь в принципе можно было написать j>=1,тогда в


не нужно было добавлять aN[i]
ну а так код выглядит правильным,в чём именно проблема?не компилируется или выводит не то значение?
Выводит не правильное значение...Например при вводе 1 2 3, он говорит, что у 2 элемента макс сумма делителей, равная 3.
0
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]/ лишнее
0
Larkin888
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 42
20.06.2012, 14:17  [ТС] #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
нужно складывать не результат деления,а сами делители,так что aN[i]/ лишнее
Всё получилосЬ, спасибо=)
0
20.06.2012, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 14:17
Привет! Вот еще темы с ответами:

Процедуры и функции: Найти натуральное число из интервала [n1, n2] с максимальной суммой делителей - C++
Найти натуральное число из интервала с максимальной суммой делителей. Для нахождения суммы делителей написать функцию. Выдает...

Определить число с максимальной суммой делителей - C++
Помогите составить программу. Вот условие: На отрезке определить число с максимальной суммой делителей. Спасибо заранее!

Найти число с наибольшей суммой делителей - C++
Здравствуйте. Помогите решить задачу: Дано натуральное N&lt;= 1000. Среди натуральных чисел не превосходящих N, найти число с наибольшей...

Для массива с максимальной суммой переместить положительные элементы в начало - C++
Задать целочисленные двузначные массивы А = {ai i = 0, 1,..., 20}, B = {bjj = 0, 1, … 30}, C = {ck k = 0, 1, 2,..., 40}Для массива...


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

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

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