Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 222
#1

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

19.06.2013, 21:43. Просмотров 1419. Ответов 24
Метки нет (Все метки)

Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора 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;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2013, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) (C++):

Напишите программу, вычисляющую определенный интеграл на указанном пользователем промежутке и с указанным шагом разбиения этого промежутка - C++
Напишите программу, вычисляющую определенный интеграл на указанном пользователем промежутке и с указанным шагом разбиения этого промежутка,...

Напишите программу, которая в указанном пользователем каталоге и его подкаталогах выполняет поиск файла - Delphi
Напишите программу, которая в указанном пользователем каталоге и его подкаталогах выполняет поиск файла. // Поиск файла в указанном...

Функция, заполняющая массив псевдослучайными числами в заданном пользователем диапазоне без повторений - C++
Тема: Функции2. 4. Реализовать функцию RandWithoutRepetition, с помощью которой можно было бы заполнить массив псевдослучайными числами в...

С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от 1 до 99 включительно. - Pascal ABC
Практическая работа Задание 9. С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от 1 до...

С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от 1 до 99 включительно. - Turbo Pascal
Помогите кто может найти решения!!! С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от...

Используя оператор while напишите программу определения всех чисел в диапазоне от 1 до 100 включительно, кото - Delphi
С помощью оператора while напишите программу определения всех чисел в диапазоне от 1 до 100 включительно, которые нацело делятся на 12.

24
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 21:49 #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);
3
zer0mail
2379 / 2010 / 200
Регистрация: 03.07.2012
Сообщений: 7,249
Записей в блоге: 1
19.06.2013, 21:52 #3
Можно тернарную операцию использовать...
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
19.06.2013, 21:56 #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;
0
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 222
19.06.2013, 21:58  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
объявить sum и приравнять его к 0
например так
*
C++
1
 int sum=0;
*
это я просто пропустил, суть вопроса, как решить задание не используя оператор иф! )))
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:00 #6
Цитата Сообщение от Аццкий Прогер Посмотреть сообщение
это я просто пропустил, суть вопроса, как решить задание не используя оператор иф! )))
так в посте #2 пример как совсем без if и for. проще некуда
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
19.06.2013, 22:13 #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 Посмотреть сообщение
проще некуда
ты опять в своем репертуаре
сумма арифметической прогрессии но без расшифровки

1
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:19 #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 Посмотреть сообщение

Не по теме:


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

Не по теме:

что поделать

1
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
19.06.2013, 22:19 #9
Цитата Сообщение от Thinker Посмотреть сообщение
sum += (a <= b) * i;
лишнее это
если a <b то исполнится первый цикл
если больше второй
не зачем условие вставлять
но если a == b то исполнятся оба по разу в результате в sum удвоенное значение
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:20 #10
Цитата Сообщение от ValeryS Посмотреть сообщение
косяк будет
не будет, если границы правильно расставить
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
19.06.2013, 22:20 #11
а ты уже поправил
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:21 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
лишнее это
давно исправил
1
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
19.06.2013, 22:23 #13
Цитата Сообщение от Thinker Посмотреть сообщение
не будет, если границы правильно расставить
согласен
это я чейто ступил
Ну не могут два человека мыслить одинаково

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

Не по теме:

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

1
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 222
19.06.2013, 22:39  [ТС] #14
Спасибо ребята, помогли))
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
19.06.2013, 22:43 #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;
}
2
19.06.2013, 22:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2013, 22:43
Привет! Вот еще темы с ответами:

Реализовать заполнение массива случайными числами в диапазоне, указанном пользователем (функции) - C++
Добрый день, подскажите как сделать это задание.... За ранее благодарен!!! По возможности, комментируйте каждое действие. Описать...

Вывести на экран данные о рейсах самолетов, время вылета которых находится в диапазоне, указанном пользователем. - Pascal
Вывести на экран данные о рейсах самолетов (место назначения, авиакомпания), время вылета которых находится в диапазоне, указанном...

Вывести числа в диапазоне от 0 до 500.которые делятся на 5 без остатка - C++
создать программу которая выводит на экран числа в диапазоне от 0 до 500.которые делятся на 5 без остатака.Заранее спасибо)))))

Напишите программу, читающую строки со стандартного устройства ввода и суммирующую их в одну большую строку - C++
1. Напишите программу, читающую строки со стандартного устройства ввода и суммирующую их в одну большую строку. Отобразите полученную...


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

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

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