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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.76
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
#1

Найти значение выражения 1.1 – 1.2 + 1.3 – … - C++

16.01.2010, 23:12. Просмотров 6537. Ответов 11
Метки нет (Все метки)

Ребят, подскажите, как это задание решается на С++?
Дано целое число N (> 0). Найти значение выражения
1.1 – 1.2 + 1.3 – …
(N слагаемых, знаки чередуются). Условный оператор не использовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 23:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти значение выражения 1.1 – 1.2 + 1.3 – … (C++):

Найти значение выражения - C++
Как написать программу, чтобы вычислить значение выражения рекурентно: S= sum(A^i *(2i+1) + sumb^(k+1) Добавлено через 1 час 41...

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

Найти значение выражения - C++
s=\frac{\sqrt{9+(x-y)^2}}{x^2+y^2+2}-e^{\left|x-y \right|}tg^3z При x=-4.5\;;\;y=0.75\cdot 10^{-4}\;;\;z=-0.845\cdot 10^2 ...

Найти значение выражения - C++
Задачи по информатике Линейные программы Даны x, y, z . Вычислить a, b, если: Формула в прикрепленном файле. Помогите,...

Найти значение выражения - C++
Помогите написать уравнение на языке с++ s=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\frac{x^4}{4!} \\\psi = x(sinx^3 + cos^2y) Жду...

Найти значение выражения - C++
При входных данних x,y

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
17.01.2010, 01:10 #2
Заводишь переменную для суммы, заносишь туда 0. Заводишь переменную для абсолютного значения слагаемого и каждый шаг увеличиваешь на 0.1. Заводишь переменную для знака и каждый шаг умножаешь её на -1. На каждом шагу добавляешь к сумме (знак*слагаемое).
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
17.01.2010, 01:15  [ТС] #3
Цитата Сообщение от Nick Alte Посмотреть сообщение
Заводишь переменную для суммы, заносишь туда 0. Заводишь переменную для абсолютного значения слагаемого и каждый шаг увеличиваешь на 0.1. Заводишь переменную для знака и каждый шаг умножаешь её на -1. На каждом шагу добавляешь к сумме (знак*слагаемое).
спасибо, но как записывать как ты выразился "каждый шаг увеличиваешь на 0.1. Заводишь переменную для знака и каждый шаг умножаешь её на -1. На каждом шагу добавляешь к сумме (знак*слагаемое)" ?
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
17.01.2010, 01:25 #4
C++
1
2
3
4
5
6
7
8
9
float sign = 1;
float val = 1.1f;
float sum = 0;
for(int i=0; i<N; ++i)
{
    sum += sign*val;
    sign *= -1;
    val += 0.1f;
}
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
17.01.2010, 01:48  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
float sign = 1;
float val = 1.1f;
float sum = 0;
for(int i=0; i<N; ++i)
{
    sum += sign*val;
    sign *= -1;
    val += 0.1f;
}
мне это не понятно, через while(true), continue break for никак?
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
17.01.2010, 14:47 #6
да можно и через велосипед
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define N 3
void main()
{
    float sign = 1;
    float val = 1.1f;
    float sum = 0;
    int i = 0;
    while (true)
    {
       switch (i){
       case (N): break;
       default:
          sum += sign*val;
          sign *= -1;
          val += 0.1f;
          i++;
          continue;
       }
       break;
    }
    std::cout<<"sum="<<sum<<"\n";
}
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
17.01.2010, 18:18  [ТС] #7
спасибо, а ещё варианты есть?

Добавлено через 2 часа 7 минут
ничего не понимаю кароче...
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
17.01.2010, 18:25 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
#define N 6
#define X 1.1
 
int main()
{
    int n = N-1, sign = 1; double res = X;
    while(n--)
    {
        res += (sign = -sign) * (X + (0.1 * (N-n-1)));
    }
    std::cout << res << std::endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
#define N 6
#define X 1.1
 
int main()
{
    int n = N; double res = 0;
    switch (n & 1){
    case 1: res = X + 0.1 * (n>>1); break;
    case 0: res = - 0.1 * (n>>1);
    }
    std::cout << res << std::endl;
}
Вот ещё 2 варианта, да можно вечно... А ничего понимать человек не может. Хоть что то да понимает. "ничего не понимаю" это отмазка разума чтобы дальше не понимать это глупость. если вы не понимаете как работает часть какой то системы вы говорите - ничего не понимаю? и смысл? не проще ли спросить как работает эта часть и все?... нет. ничего не понимаю бывает только если знаний 0. Спрашивайте конкретные вещи, на них всегда найдется ответ.
Посмотрите мой последний пример - тут даже цикла нет. Продумайте в голове каждую строчку и что будет в результате. Напишите на листке бумаги.
n & 1 - возвращает четное или нечетное число. case 1 - нечетное число case 0 - нечетное. выполнится только 1 строчка в зависимости от этого вычислится res по той или иной форумуле) проще некуда. подумайте над формулой, они простые.
n >> 1 попроще - это n / 2
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
17.01.2010, 18:28  [ТС] #9
Чувак спасибо конечно, но я не учил этого
C++
1
2
#define N 6
#define X 1.1
Если спросят что это такое, то слов у меня не будет!)
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
17.01.2010, 18:32 #10
хех, можно и без этого. просто это сообщение компилятору что надо везде заменить N на 6 и т.д.
можешь записать это вначале проги в виде
const int N = 6; и const double X = 1.1;
Morph3us
1 / 1 / 0
Регистрация: 23.12.2009
Сообщений: 45
17.01.2010, 18:36  [ТС] #11
ну да ты прав, за пояснение благодарствую)
schanker
5 / 5 / 0
Регистрация: 16.04.2010
Сообщений: 248
Записей в блоге: 1
16.04.2010, 19:48 #12
Привет всем. Я наткнулся на это задачу. Только мне надо решить точно такое же условие, но в Pascal. Может кто поможет-а?
Заранее спасибо и извините, что не по теме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2010, 19:48
Привет! Вот еще темы с ответами:

Найти значение выражения . - C++
Нужна помощь в выполнении задания на языке C++ с помощью цикла for Дано вещественное число X и целое число N (&gt; 0). Найти значение ...

Найти значение выражения - C++
#include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;cmath&gt; #include &lt;conio.h&gt; using namespace std; #define M_PI...

Найти значение выражения - C++
нужно решить c использованием while

Найти значение выражения - C++
Посчитать уравнения, что бы ответ выводился на экран. \sqrt{\left|sin^2\,60^{\circ}-4ln\left|cos\,138^{\circ} \right| \right|}\\ ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.04.2010, 19:48
Ответ Создать тему
Опции темы

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