Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2014, 20:23   #1
filimoncc
 
Регистрация: 17.02.2014
Сообщений: 9
Стрелка Проблема с программой

Разработать функцию, которая для заданного натурального числа N возвращает
сумму его делителей. С помощью данной функции:
вывести на экран только те целые числа отрезка [а, Ь], у которых сумма
делителей равна заданному числу;
ВОт код:
Код:
#include<iostream>
using namespace std;

int func(int a)
{
    if (a==1)
    {
        int sumdel=a;
        int z;
        z=a/2;
        for (int i=2; i<=z; i++)
        {
             if (a%i==0)
            {
            sumdel+=i;
            }
        }


        return sumdel;
    }
    else
        {
        int sumdel=a+1;
        int z;
        z=a/2;
        for (int i=2; i<=z; i++)
        {
             if (a%i==0)
            {
            sumdel+=i;
            }
        }
        return sumdel;
}
}

int main()
{

    int a, b, sumdel, N;
    int k=0;
    cout<<"Vvedite N:";
     cin>>N;
     cout<<"Vvedite a:";
     cin>>a;
      cout<<"Vvedite b:";
      cin>>b;

    for (a=a; a<=b; a++)
    {
            func(a);

        cout<<sumdel<<endl;//проверка значения суммы делителей
      if (sumdel==N)
      {
          int h=2;
        cout<<h<<endl;//проверка
       cout<<a<<endl;
      k++;
      }

    }
    if (k==0)
      cout<<"Net chisla takogo"<<endl;
return 0;
}
Вопрос - почему программа некорректно себя ведет?
filimoncc вне форума Ответить с цитированием
Старый 23.03.2014, 02:33   #2
bav03
 
Регистрация: 14.12.2010
Сообщений: 6
По умолчанию

"Вопрос - почему программа некорректно себя ведет? "
Ответ: потому, что в ней есть ошибки(по крайней мере, одна).
Вместо
Код:
...
 func(a);
...
должно быть.
Код:
..
sumdel=func(a);
...
У Вас в обеих функциях main и func объявлены переменные sumdel. Они не имеют никакого отношения друг к другу (Типа однофамильцы или тезки ).

Также позабавил фрагмент
Код:
if (a==1)
    {
     ...
        return sumdel;
    }
    else
Если у Вас a==1, то чего тут еще вычислять?
IMHO логичней так:
Код:
if (a==1)
    return 1;
 else
...
bav03 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с программой Олег093 Помощь студентам 1 21.04.2011 16:17
Проблема с программой Aleks2215 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 26.10.2010 22:56
Проблема с программой DjSeNseI Win Api 2 12.07.2010 00:03
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46