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

Написать функцию SUM (int M, int N) / С++ для начинающих - C++

Восстановить пароль Регистрация
 
Fresh128
Сообщений: n/a
06.03.2014, 18:49     Написать функцию SUM (int M, int N) / С++ для начинающих #1
Написать функцию SUM (int M, int N), которая вычисляет и возвращает сумму всех чисел кратных 3 и 9 в пределах от M и N включительно . Использовать оператор цикла с параметром.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
06.03.2014, 18:58     Написать функцию SUM (int M, int N) / С++ для начинающих #2
Fresh128, если кратны 9 то и кратны 3, может всё-таки или?
C++
1
2
3
4
5
6
7
8
int SUM(int M, int N)
{
    int sum = 0;
    for(; M <= N; M++)
        if(!(M % 3) || !(M % 9))
            sum += M;
    return sum;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2014, 00:20     Написать функцию SUM (int M, int N) / С++ для начинающих #3
Цитата Сообщение от GuGo1991 Посмотреть сообщение
for(; M <= N; M++)
В идеале так не пишут. Тут нужна как минимум проверка еще этого диапозона.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.03.2014, 16:05     Написать функцию SUM (int M, int N) / С++ для начинающих #4
go, M <= N проверяется же. Можно было бы и так:
C++
1
for(int i = M; i <= N; i++)
Но по сути же одно и то же
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
07.03.2014, 16:16     Написать функцию SUM (int M, int N) / С++ для начинающих #5
Цитата Сообщение от GuGo1991 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int SUM(int M, int N)
{
 int sum = 0;
   for(; M <= N; M++)
     if(!(M % 3) || !(M % 9))
     sum += M;
return sum;
}
слишком много пустых проходов
C++
1
if(!(M % 3) || !(M % 9))
вторая проверка бессмысленна если кратна 3 то и кратна 9

вот так будет побыстрее
C++
1
2
3
4
5
6
7
8
9
10
int SUM(int M,int N)
{
int sum=0;
while(M%3)// догоняем до кратного 3
  M++;
for(;M<=N;M+=3)
  sum+=M;
 
return sum;
}
если кратна трем но не кратна девяти( что то мне подсказывает что так и должно звучать)
C++
1
2
3
4
5
6
7
8
9
10
11
int SUM(int M,int N)
{
int sum=0;
while(M%3)// догоняем до кратного 3
  M++;
for(;M<=N;M+=3)
  if(M%9)
     sum+=M;
 
return sum;
}
Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
В идеале так не пишут. Тут нужна как минимум проверка еще этого диапозона.
в смысле?
какого диапазона?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.03.2014, 16:51     Написать функцию SUM (int M, int N) / С++ для начинающих #6
Цитата Сообщение от ValeryS Посмотреть сообщение
вторая проверка бессмысленна если кратна 3 то и кратна 9
Как раз наоборот, если кратно 9 то и кратно 3. В прочем, я поэтому и переспросил Fresh128,
как-то глупо звучит условие задания, так как только кратные 3 и 9 будут числа кратные 9

Добавлено через 17 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
слишком много пустых проходов
Согласен, сразу не подумал )
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
07.03.2014, 16:57     Написать функцию SUM (int M, int N) / С++ для начинающих #7
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Как раз наоборот, если кратно 9 то и кратно 3.
ну это с точки зрения математики, а с точки зрения програмирования
C++
1
if(!(M % 3) || !(M % 9))
!(M % 3) истина
смысла проверять !(M % 9) уже нету

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
смысла проверять !(M % 9) уже нету
а самое смешное что и не будет проверятся
при ИЛИ если первое условие истина то второе просто не проверяется
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.03.2014, 18:00     Написать функцию SUM (int M, int N) / С++ для начинающих #8
ValeryS, да, да, сглупил на ровном месте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2014, 18:22     Написать функцию SUM (int M, int N) / С++ для начинающих
Еще ссылки по теме:

C++ Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n) (C/C++/Java)
Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных: float, int, double C++
Как передать 0 в функцию типа f (int, int&) C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
07.03.2014, 18:22     Написать функцию SUM (int M, int N) / С++ для начинающих #9
GuGo1991,
Yandex
Объявления
07.03.2014, 18:22     Написать функцию SUM (int M, int N) / С++ для начинающих
Ответ Создать тему
Опции темы

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