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

Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 219
19.06.2013, 21:43     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #1
Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает верхнюю и нижнюю границы. Что произойдет, если числа 7 и 3 ввести именно в таком порядке? Запустите программу, введите 7 и 3. Добейтесь того, чтобы программа работала и при таком порядке ввода чисел.

Никак не могу сделать эту задачу. Как не бился. Без ифа никак(((
Хелп, что нужно добавить в этот код, чтобы он работал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main ()
{
    int v1,v2;
    cout<<"enter two nubers: "<<endl;
    cin>>v1>>v2;
    for (int i=v1; i<=v2; ++i)
        sum+=i;
    cout<<sum<<endl;
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2013, 21:43     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы)
Посмотрите здесь:

C++ Вывести числа в диапазоне от 0 до 500.которые делятся на 5 без остатка
C++ Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователя.
C++ Напишите программу, вычисляющую определенный интеграл на указанном пользователем промежутке и с указанным шагом разбиения этого промежутка
Определить все ли числа из массива лежат в указанном диапазоне C++
C++ Напишите программу! Сделал скин экрана. Самым простым способ (без массивов). Как можно быстрей
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 21:49     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вот вам совсем без if и for:
C++
1
cout << (a <= b) * (a * (b - a + 1) + (b - a) * (b - a + 1) / 2) + (b < a) * (b * (a - b + 1) + (a - b) * (a - b + 1) / 2);
zer0mail
2179 / 1862 / 187
Регистрация: 03.07.2012
Сообщений: 6,625
Записей в блоге: 1
19.06.2013, 21:52     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #3
Можно тернарную операцию использовать...
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 21:56     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #4
Цитата Сообщение от Аццкий Прогер Посмотреть сообщение
что нужно добавить в этот код, чтобы он работал
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main ()
{
 int v1,v2;
 cout<<"enter two nubers: "<<endl;
 cin>>v1>>v2;
 for (int i=v1; i<=v2; ++i)
      sum+=i;
 cout<<sum<<endl;
 return 0;
}
объявить sum и приравнять его к 0
например так
C++
1
 int sum=0;
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 219
19.06.2013, 21:58  [ТС]     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #5
Цитата Сообщение от ValeryS Посмотреть сообщение
объявить sum и приравнять его к 0
например так
*
C++
1
 int sum=0;
*
это я просто пропустил, суть вопроса, как решить задание не используя оператор иф! )))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:00     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #6
Цитата Сообщение от Аццкий Прогер Посмотреть сообщение
это я просто пропустил, суть вопроса, как решить задание не используя оператор иф! )))
так в посте #2 пример как совсем без if и for. проще некуда
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 22:13     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #7
тебе нужна сумма от 3 до 7 не зависимо как их вызвали?
можно так
C++
1
2
3
4
for (int i=v1; i<=v2; ++i)
        sum+=i;
for (int i=v2; i<=v1; ++i)
        sum+=i;
если v1 меньше v2
то будет работать первый цикл иначе второй
косяк будет если пределы равны сработают оба цикла sum будет удвоенный
хотя это можно обойти так
C++
1
2
3
4
5
for (int i=v1; i<=v2; ++i)
        sum+=i;
for (int i=v2; i<=v1; ++i)
        sum+=i;
sum-=v1*(!(v1-v2))
Добавлено через 1 минуту
Цитата Сообщение от Thinker Посмотреть сообщение
так в посте #2 пример как совсем без if и for.
Я так понял что for нужен

Добавлено через 5 минут

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
проще некуда
ты опять в своем репертуаре
сумма арифметической прогрессии но без расшифровки

Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:19     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #8
с for так c for
C++
1
2
3
4
5
   sum = 0;
   for(i = a; i <= b; ++i)
      sum += i;
   for(i = b; i < a; ++i)
      sum += i;
Добавлено через 5 минут
Цитата Сообщение от ValeryS Посмотреть сообщение

Не по теме:


ты опять в своем репертуаре

Не по теме:

что поделать

ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 22:19     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #9
Цитата Сообщение от Thinker Посмотреть сообщение
sum += (a <= b) * i;
лишнее это
если a <b то исполнится первый цикл
если больше второй
не зачем условие вставлять
но если a == b то исполнятся оба по разу в результате в sum удвоенное значение
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:20     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #10
Цитата Сообщение от ValeryS Посмотреть сообщение
косяк будет
не будет, если границы правильно расставить
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 22:20     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #11
а ты уже поправил
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:21     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #12
Цитата Сообщение от ValeryS Посмотреть сообщение
лишнее это
давно исправил
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 22:23     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #13
Цитата Сообщение от Thinker Посмотреть сообщение
не будет, если границы правильно расставить
согласен
это я чейто ступил
Ну не могут два человека мыслить одинаково

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
давно исправил
давно две минуты прошло
я за тобой не успеваю

Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 219
19.06.2013, 22:39  [ТС]     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #14
Спасибо ребята, помогли))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11812 / 6791 / 768
Регистрация: 27.09.2012
Сообщений: 16,854
Записей в блоге: 2
Завершенные тесты: 1
19.06.2013, 22:43     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #15
Вот еще простенький вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main ()
{
    int v1,v2;
    int sum=0;
    cout<<"enter two nubers: "<<endl;
    cin>>v1>>v2;
    int step=1+(-2*(v1>v2));
    for (; v1!=v2 || ((sum+=v1) && false) ; v1+=step)
        sum+=v1;
    cout<<sum<<endl;
    return 0;
}
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 22:53     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #16
Цитата Сообщение от Аццкий Прогер Посмотреть сообщение
Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает верхнюю и нижнюю границы.
Цитата Сообщение от zer0mail Посмотреть сообщение
Можно тернарную операцию использовать...
Можно так еще
C++
1
2
for (int i=(v2-v1>0)?v1:v2; i<=(v2-v1>0)?v2:v1; ++i)
        sum+=i;
но лично мне это не нравится

Добавлено через 5 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
((sum+=v1) && false)
а в чем смысл false?
всегда ложь
тогда это выражение
Цитата Сообщение от Croessmah Посмотреть сообщение
v1!=v2 || ((sum+=v1) && false)
превращается в
C++
1
v1!=v2
или я чегойто недопонял?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11812 / 6791 / 768
Регистрация: 27.09.2012
Сообщений: 16,854
Записей в блоге: 2
Завершенные тесты: 1
19.06.2013, 22:58     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #17
Цитата Сообщение от ValeryS Посмотреть сообщение
превращается в
тогда пропустим суммирование последнего элемента

Цитата Сообщение от ValeryS Посмотреть сообщение
а в чем смысл false?
в том, чтобы не допустить общего true
выражение целиком построено на лентяях
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
19.06.2013, 23:14     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #18
Цитата Сообщение от Croessmah Посмотреть сообщение
в том, чтобы не допустить общего true
переведи
все врубился
ну ты и закрутил пришлось в ручную цикл проходить
и возник вопрос

Цитата Сообщение от Croessmah Посмотреть сообщение
* * for (; v1!=v2 || ((sum+=v1) && false) ; v1+=step)
здесь sum каждую итерацию будет прибавляться или только один раз при входе в цикл?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,690
Записей в блоге: 3
19.06.2013, 23:25     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #19
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
#include <iostream>
using namespace std;
int main(){
setlocale(0,"rus");
const int lower=1;
const int upper=111;
cout<<"Для выхода из цикла запросов введите отрицательное для любого числа "<<endl;
int f_numb=0;
int s_numb=0;
do{
cout<<"\nВведите 1-е число ";
cin>>f_numb;
cout<<endl;
cout<<"Введите 2-е число ";
cin>>s_numb;
cout<<endl;
while( lower <= f_numb && f_numb <= upper && lower <= s_numb && s_numb <= upper ){
cout << "Величины в диапазоне от " << lower << " до " << upper << endl;
cout << "Их сумма равна " << (f_numb + s_numb)<<endl;
break;
}
while( (f_numb >= 0 && f_numb >=0) && lower > f_numb || f_numb > upper || lower > s_numb || s_numb > upper ){
cout << "Величины НЕ в диапазоне от " << lower << " до " << upper << endl;
break;
}
}while( f_numb >= 0 && s_numb >= 0 );
 
while ( f_numb < 0 || s_numb < 0 ){
cout<<"\nДавай, - досвидания!";
break;
}
cin.get();
cin.get();
}
Ни ифа ни фора.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 01:20     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы)
Еще ссылки по теме:

C++ Вывод числа в столбик с первой цифры, без массива, без строк
C++ Напишите программу, которая вводит натуральное число n и находит все совершенные числа в диапазоне от 1 до n
Напишите программу, читающую строки со стандартного устройства ввода и суммирующую их в одну большую строку C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11812 / 6791 / 768
Регистрация: 27.09.2012
Сообщений: 16,854
Записей в блоге: 2
Завершенные тесты: 1
20.06.2013, 01:20     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) #20
Цитата Сообщение от ValeryS Посмотреть сообщение
здесь sum каждую итерацию будет прибавляться или только один раз при входе в цикл?
При выходе из цикла - когда v1!=v2 даст false. Но можно внести в условие так, что сам цикл останется пустым
Yandex
Объявления
20.06.2013, 01:20     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы)
Ответ Создать тему
Опции темы

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