3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
1

Суммирование чисел от 50 до 100 через циклы for и while.

10.09.2014, 07:23. Показов 15391. Ответов 9
Метки нет (Все метки)

Всем доброго утра. Попал в политех, нужно выучить С++. Учу при помощи учебника "Язык програмированияф С++. Вводный курс."
Суть проблемы. Есть задание написать суммирование чисел от 50 до 100 через цыкл for, и такое же, потом через цыкл while.
Написать-написал, почему разные ответы получаются??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
int main ()
{
int sum=0;
int i=50;
while ( i<=100){
++i;
sum+=i;}
 
/*for (int i=50; i<=100; ++i)
sum+=i;*/
std::cout<<"Result "<< sum;
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2014, 07:23
Ответы с готовыми решениями:

Циклы. Среди натуральных чисел от 1 до 100 найти все пары чисел, для которых их сумма равна их произведению и кол-во таких пар.
Среди натуральных чисел от 1 до 100 найти все пары чисел, для которых их сумма равна их...

Циклы с параметром: Выдать на печать сумму чисел, больших 100
Помогите решить задачку) Ввести 85 значений переменной A. Выдать на печать сумму чисел, больших...

Использовать вложенные циклы для нахождения делителей чисел от 2 до 100
Помогите решить задачку из книги Шилдта по Java. Имеется следующий код: class FindFac { ...

Циклы: подсчитать количество целых чисел в диапазоне от 100 до 999, у которых все цифры разные
Задание 2: Подсчитать количество целых чисел в диапазоне от 100 до 999, у которых все цифры разные

9
Эксперт CЭксперт С++
5068 / 2253 / 331
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 19
10.09.2014, 07:30 2
Наверное потому, что в while-цикле инкрементируешь до суммирования, а в for-цикле после.
Так должно быть одинаково:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
int main ()
{
    int sum = 0;
    int i = 50;
    while (i<=100)
    {
         sum += i;
         ++i;
    }
    std::cout << "Result: "<< sum << std::endl;
 
    for (int i=50; i<=100; ++i)
         sum += i;
    std::cout << "Result: " << sum << std::endl;
 
    return 0;
}
1
1404 / 567 / 127
Регистрация: 31.10.2011
Сообщений: 1,955
10.09.2014, 07:31 3
Лучший ответ Сообщение было отмечено MultyStepan как решение

Решение

C++
1
2
3
int sum=0;
for(int i=50; i<=100; i++)
 sum+=i;
C++
1
2
3
4
5
int i=50;
while ( i<=100){
sum+=i;
i++;
}
0
3 / 3 / 4
Регистрация: 08.02.2014
Сообщений: 213
10.09.2014, 07:33  [ТС] 4
спасибо
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.09.2014, 07:34 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int sum = 0, sum2 = 0, i = 50;
 
while ( i <= 100 )
{
    sum += i;
    ++i;    
}
 
for ( int i = 50; i <= 100; ++i )
{
    sum2 += i;
}
 
std::cout << "sum = " << sum << "; sum2 = " << sum2 << "." ;
0
Эксперт CЭксперт С++
5068 / 2253 / 331
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 19
10.09.2014, 07:36 6
Обнулить sum забыл. Вот так верно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
int main ()
{
    int sum = 0;
    int i = 50;
    while (i<=100)
    {
         sum += i;
         ++i;
    }
    std::cout << "Result: " << sum << std::endl;
    
    sum = 0;
    for (int i=50; i<=100; ++i)
         sum += i;
    std::cout << "Result: " << sum << std::endl;
 
    return 0;
}
0
zer0mail
10.09.2014, 08:49
  #7

Не по теме:

В политехе принято писать цЫкл вместо цИкл? Может, это полЫтех? :D

0
4654 / 2167 / 272
Регистрация: 01.03.2013
Сообщений: 5,756
Записей в блоге: 22
10.09.2014, 13:31 8
Вот так имхо красивше, правда не проверял - на работе сейчас
C++
1
while ( i <= 100 ) sum += i++;
ЗЫ А некто Карл Гаусс в свое время подобную задачу решил в уме, когда остальные складывали вручную
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.09.2014, 15:30 9
Ну, тогда в честь Гаусса!
C++
1
sum2 = 51 * ( 50 + 100 ) / 2;
0
4654 / 2167 / 272
Регистрация: 01.03.2013
Сообщений: 5,756
Записей в блоге: 22
10.09.2014, 16:12 10
BRcr, все правильно, только надо через циклы, типа
C++
1
2
int sum2 = 51 * ( 50 + 100 ) / 2;
do printf("Сумма равна %u, понятно почему? (y/n)", sum2); while((char c = getc()) != 'y')
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2014, 16:12

Вывести в Label массив из 100 рандомных чисел через запятую
ребят помогите пожалуйста, нужно вывести в лейбл массив из 100 рандомных чисел, через запятую, у...

Обработка массива из 100 случайных чисел от -100 до 100
Определите, какое число встречается в этом массиве чаще всего и выведите это число. Если таких...


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

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

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