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

Вычислить выражение - C++

Восстановить пароль Регистрация
 
Georgg
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 37
24.08.2014, 04:28     Вычислить выражение #1
Доброго времени суток всем.Подскажите,как реализовать вычисление данного выражения на С++.С помощью простейших операторов и цикла For.
Составить программу вычисления выражения (((5^2-4^2)^2-3^2)^2-2^2)^2-1^2)^2
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2014, 04:28     Вычислить выражение
Посмотрите здесь:

вычислить выражение C++
C++ Вычислить выражение
Вычислить выражение C++
вычислить выражение C++
C++ Вычислить выражение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.08.2014, 04:56     Вычислить выражение #2
с for в голову сразу ничего не приходит, а вот рекурсия - другое дело.
Georgg
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 37
24.08.2014, 04:59  [ТС]     Вычислить выражение #3
надо c for в этом вся загвоздка)

Добавлено через 1 минуту
это просто задача из учебника,из главы где ученик ещё пока не знает что такое рекурсия...
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,231
24.08.2014, 05:06     Вычислить выражение #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
 using namespace std;
 long long Pow(long long num, int stepen)
 {
     long long result = num;
    for(int i=1;i<stepen;i++)
    {
        result *= num;
    }
    return result;
 }
int main()
{
    // (((5^2-4^2)^2-3^2)^2-2^2)^2-1^2)^2
    cout << Pow(2,3) << endl;
    
    return 0;
}
Далее поймёте // Pow(( pow(2,3) - pow(1,3) ) ,2)
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.08.2014, 05:14     Вычислить выражение #5
Цитата Сообщение от Georgg Посмотреть сообщение
это просто задача из учебника,из главы где ученик ещё пока не знает что такое рекурсия...
Что за учебник то? Да и чем плохо забегать вперед?

Пока только так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    INT64 sum = 0;
    for (int i = 5; i > 0; i--)
    {
        if (i == 5)
            sum = 25;
        else
        {
            sum -= i*i;
            sum = sum*sum;
        }
    }
    cout << sum;
    _getch();
    return 0;
}
Добавлено через 2 минуты
или так
C++
1
2
3
    INT64 sum = 30;
    for (int i = 5; i > 0; i--)
        sum = (sum - i*i)*(sum - i*i);
rikimaru2013
24.08.2014, 05:20
  #6

Не по теме:

господи, да там же последовательность.... . xD Не, ненадо об этом говорить ТС )

Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
24.08.2014, 10:59     Вычислить выражение #7
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
#include <stdio.h>
#include <stdlib.h>
 
int pow1(int a, int b){ if(b ==1) return a; return a*pow1(a, --b);}
int main(){
 
char* x="(((5^2-4^2)^2-3^2)^2-2^2)^2-1^2)^2/0";
int i; int state; int op1, op2;
for(i=0, state = 0; x[i]!='/0'; i++)
{
switch(x[i])
{
case '(': switch(state){ case 0: state =1; break; case 1: state=2; break; case 2: state=3; break; default: break;} break;
case ')': switch(state){ case 6: op2-=op1; printf("op2:%d\n", op2); state=7; break; case 9: state= 2; break; default: break;} break;
case '^': switch(state){ case 4: state=5; break; case 7: op1= op2; state= 9; break; case 8: state= 9; break; default: break;} break;
case '-': switch(state){ case 6: op2=op1; state=7; break; default:break;} break;
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
switch(state){ case 1: case 2: case 3: op1 = x[i]-'0'; state=4; break;
case 9: case 5: op1= pow1(op1, x[i]-'0'); printf("%d\n", op1); state =6;
case 7: op1 = x[i]-'0'; state=8; break; default: break;}
break;
default: break;}
}
return 0;
}
Подобные задачи делаются рекурсией, как правильно заметили выше.
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
24.08.2014, 11:20     Вычислить выражение #8
Вариант с выводом на экран всех промежуточных подсчётов:
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
# include <iostream>
 
unsigned long toSquare(unsigned long x)
{
    return x*x;
}
 
int main()
{
    const int aConst = 5;
    int a = aConst;
    int b = a - 1;
    for (; b>0; --b)
    {
 
        int aSquared = toSquare(a);
        std::cout << "There is value of aSquared: "
                  << aSquared << std::endl;
        int bSquared = toSquare(b);
        std::cout << "There is value of bSquared: "
                  << bSquared << std::endl;
        a = aSquared - bSquared;
        std::cout << "There is value of variable a: "
                  << a << std::endl;
 
    }
    std::cout << "There is result of calculating: "
              << a << std::endl;
}
Вариант с выводом на экран только конечного результата:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# include <iostream>
 
unsigned long toSquare(unsigned long x)
{
    return x*x;
}
 
int main()
{
    const int aConst = 5;
    int a = aConst;
    int b = a - 1;
    for (; b>0; --b)
    {
        int aSquared = toSquare(a);
        int bSquared = toSquare(b);
        a = aSquared - bSquared;
    }
    std::cout << "There is result of calculating: "
              << a << std::endl;
}
Добавлено через 5 минут
Самый простой вариант:
C++
1
2
3
4
5
6
7
8
9
# include <iostream>
 
int main()
{
    int a = 5;
    for (int b=a-1; b>0; --b)
        a = a * a - b * b;
    std::cout << "There is result of calculating: " << a << std::endl;
}
Georgg
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 37
24.08.2014, 16:23  [ТС]     Вычислить выражение #9
спасибо друзья всем))

Добавлено через 1 минуту
а учебник этот
http://my-shop.ru/shop/books/180616.html
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
24.08.2014, 16:44     Вычислить выражение #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Georgg Посмотреть сообщение
(((5^2-4^2)^2-3^2)^2-2^2)^2-1^2)^2
Это похоже на схему Горнера.
C++
1
2
3
4
5
6
7
8
9
10
long n = 5;
long x = n*n;
for( --n ; n>=1; --n )
{
// вычтем n*n 
x -= n*n;
 
// возведём в квадрат
x *= x;
}
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
24.08.2014, 16:53     Вычислить выражение #11
Georgg, блин, забыл в своих примерах в конце return 0; поставить:
C++
1
2
3
4
5
6
7
8
9
10
# include <iostream>
 
int main()
{
    int a = 5;
    for (int b=a-1; b>0; --b)
        a = a * a - b * b;
    std::cout << "There is result of calculating: " << a << std::endl;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2014, 21:40     Вычислить выражение
Еще ссылки по теме:

Вычислить выражение n++*m C++
Вычислить выражение C++
Вычислить выражение C++

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

Или воспользуйтесь поиском по форуму:
samurr
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 50
24.08.2014, 21:40     Вычислить выражение #12
получилось

Добавлено через 10 секунд
спасибо
Yandex
Объявления
24.08.2014, 21:40     Вычислить выражение
Ответ Создать тему
Опции темы

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