Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Сумма всех целых нечетных чисел в С++
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Charlie Rat Charlie Rat вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2007
По умолчанию Сумма всех целых нечетных чисел в С++ - 16.11.2007, 01:07

Помогите найти ошибку в коде.
Программа должна находить сумму всех нечетных чисел в заданном диапазоне.
Заранее спасибо.

Код:
#include <iostream>
using namespace std;
void main(){
    int BEGIN=1; 
    int END=5; 
    int SUMM=0; 
    int i=BEGIN; 
    
    while(i<=END){ 
        SUMM+=!(i%2);
        i++;
    }
        cout<<"Result - "<<SUMM<<"\n\n";
}
Ответить с цитированием
  (#2 (permalink)) Старый
Arachnelis Arachnelis вне форума
Member
 
Сообщений: 1,324
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.07.2007
По умолчанию 16.11.2007, 01:12

Цитата:
SUMM+=!(i%2);
Эта строка считает КОЛИЧЕСТВО нечетных чисел, а не их сумму.

Надо:

Код:
...
while(i<=END)
{ 
   if ( !(i%2) )
      SUMM+=i;
   i++;
}
...
Ответить с цитированием
  (#3 (permalink)) Старый
Charlie Rat Charlie Rat вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2007
По умолчанию 16.11.2007, 01:37

Наверное провильнее будет вот так:

Код:
while(i<=END)
{ 
   if (i%2)
      SUMM+=i;
   i++;
}
Ответить с цитированием
  (#4 (permalink)) Старый
Charlie Rat Charlie Rat вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2007
По умолчанию 16.11.2007, 01:38

Потому что в Вашем варианте ответ "6", а надо "9". 1+3+5=9
Ответить с цитированием
  (#5 (permalink)) Старый
Arachnelis Arachnelis вне форума
Member
 
Сообщений: 1,324
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.07.2007
По умолчанию 16.11.2007, 01:55

Да не за что
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 16.11.2007, 08:59

Извращенцы - циклы тут ни к чему
Код:
BEGIN = BEGIN/2;
END = (END+1)/2;
cout<<"Result - "<<(END*END - BEGIN*BEGIN)<<"\n\n";
PS: это, кстати, к вопросу о том, нужна ли математика программисту
Ответить с цитированием
  (#7 (permalink)) Старый
Arachnelis Arachnelis вне форума
Member
 
Сообщений: 1,324
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.07.2007
Exclamation 16.11.2007, 09:02

В принципе верно, но при малейшем изменении условий придется-таки писать цикл

P.S. Повторим "шедевр" темы "Работа с битами"?
Там до 1-го места не добрались, может здесь удастся?

update:
P.P.S. Не-а, тут не математика нужна, а анализ. Доказательство, если интересно, могу привести, но это оффтоп.
Ответить с цитированием
  (#8 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 16.11.2007, 12:40

Да и с циклами что-то вы намудрили можно было инкремент по 2 вести и if ненужен будет тогда.
Ответить с цитированием
  (#9 (permalink)) Старый
Charlie Rat Charlie Rat вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2007
По умолчанию 16.11.2007, 16:45

Сумма должна считаться в заданном диапазоне. Наверное, без цикла не обойтись. Или есть возможность задать диапазон по-другому?
Ответить с цитированием
  (#10 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 16.11.2007, 17:06

Цитата:
Сумма должна считаться в заданном диапазоне.
Вообще-то приведённое решение и работает с диапазоном
Цитата:
P.P.S. Не-а, тут не математика нужна, а анализ.
Разве это не раздел математики? И потом - задача так же может быть сведена к вычислению суммы арифметической прогрессии, хоть я и решал её по другому (просто мне давно известно свойство - сумма чисел 2i-1, где i меняется от 1 до n, равна квадрату n).
Цитата:
Доказательство, если интересно, могу привести, но это оффтоп.
Интересно.
Ответить с цитированием
  (#11 (permalink)) Старый
Arachnelis Arachnelis вне форума
Member
 
Сообщений: 1,324
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.07.2007
Post 19.11.2007, 13:11

Отвечаю сразу всем в одной мысли (чтобы оффтоп не вырезали )

Все просто. Человек с развитой способностью к анализу сообразит, что, применив ДРУГУЮ сферу знаний, можно ИЗМЕНИТЬ САМ ПОДХОД к решению задачи. Сообразив, что мы имеем дело с арифметической прогрессией, можно взять из школьного учебника формулу. Если спросить у любого прохожего - он вспомнит, что в школе изучал такое дело (хотя точную формулу может с ходу и не приведет), но чтобы сообразить, когда, где и зачем надо ее применить, надо обладать развитым анализом.

Главное достоинство метода прогрессий - время вычисления не будет зависеть от длины последовательности, в отличие от циклического перебора. Т.е. выигрыш быстродействия будет тем заметнее, чем больше длина заданного интервала.

Но тут надо смотреть по ситуации. Если задача широкая, и условия выборки элементов для суммирования переменчивы - то перебор неизбежен. Если же просто требуется то, что требуется - сумма нечётных чисел - то это формула из школьного учебника.

SiMM, за анализ респект!
Ответить с цитированием
  (#12 (permalink)) Старый
Charlie Rat Charlie Rat вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.11.2007
По умолчанию 28.11.2007, 01:46

Большое Всем СПАСИБО!!!
Думаю, что тему можно закрыть!
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Belkins Belkins вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.10.2011
По умолчанию 03.10.2011, 03:48

Ребята помогите пожалуйста есть условие:
Вариант 1. Показати, що сума непарних натуральних чисел дорівнює квадрату цілого числа. Кількість непарних натуральних чисел задає користувач.

я сделал программу таким образом:


#include <iostream>
using namespace std;
int main()
{
int i=1, n, Chislo, Kol, k, Summachisel;
float Kvadratchisla;
cout<<"vedite kolichestvo n: ";
cin>>n;
cout<<"n= "<<n<<endl;
Chislo=0;
Kol=0;
k=1;
while (i++<=n, i>0, n>0)
{
for(i=1; i<=n; i++)
{if (i%2)
Kol=k++;
Chislo=i++;
Summachisel=((1+i)/2)*(((i-1)/2)+1);
cout<<"Summachisel= "<<Summachisel<<'\t';
cout<<"Chislo= "<<Chislo<<'\t';
cout<<"Kol= "<<Kol<<endl;'\t';
{if (Kol*Kol!=Summachisel)
{ cout<<"umova ne vukonana i Suma chicel ne ravna ihnemu kolychestvu v kvadrate";
}
else
Kvadratchisla=(Kol*Kol);
cout<<"To chto trebovalos' dokazat':"<<'\n'<<"Kvadratchisla= "<<Kvadratchisla<<'\t';}
system("pause");
}
system("pause");
return 0; }
}



как можно было сделать ее по другому?
Ответить с цитированием
  (#14 (permalink)) Старый
winter1972 winter1972 вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.07.2016
По умолчанию Сумма нечётных чисел определённого диапазона. - 09.07.2016, 20:22

#include<iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
int A, B;
int C = 0;
cout << "\t\t\tA=";
cin >> A;
cout << "\t\t\tB=";
cin >> B;
int D = A;
while (D <= B) {
if (D % 2 == 1)
C = C + D;
D++;
}
cout << "\n" << "\t\t\t" << C;
system("pause");
}
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод данных на консоль четных и нечетных чисел turtles Java 0 07.09.2011 09:10
Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очере Tormiz61 Pascal 4 18.06.2011 15:07
дан массив целых чисел Daggett0 Pascal 7 29.05.2011 23:18
Программа на вывод нечетных целых цифр, не больше 10 в С++ CapitainJack Вопросы начинающих программистов 0 05.12.2010 14:48
Си. Сумма четных и нечетных чисел Network22 С/С++ 15 16.02.2010 22:47
Список нечетных чисел alianna Lisp 1 01.12.2009 21:14
Нахождение суммы четных и нечетных чисел массива Charlie Rat Вопросы начинающих программистов 10 08.12.2007 17:58
Список целых чисел imported_Luke Prolog 1 29.05.2007 22:30
Сумма ряда целых четных чисел от 0 до n Student2 Prolog 4 25.02.2007 14:01
Ввод целых чисел)) Amputator Pascal 3 18.09.2006 15:08
Как написать программу вычисления суммы всех двухзначных нечетных чисел CoolGoblin Вопросы начинающих программистов 9 21.03.2005 19:59
Дана матрица целых чисел размером 10*12. Напечатайте индексы всех ее седловых точек Timik Pascal 7 10.02.2005 12:40



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов