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

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

Войти
Регистрация
Восстановить пароль
 
nerei
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 6
#1

Циклы, подскажите пожалуста - C++

28.06.2012, 09:37. Просмотров 337. Ответов 6
Метки нет (Все метки)

По условию задачи нужно вычислить выражение, при вводе необходимых данных с клавиатуры.
Задача выглядит следующим образом Дан корень, по корнем единица корень третей степени из двух плюс корень n-ой степени из n и т.д
т.е это (n+(n1)^(n1+1)\2))^n\2 ... и т.д
Циклы, подскажите пожалуста
Вот такое решение я нашёл:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
 
 
int main()
{
    
    double s;
    int i,n;
 
    printf("Vvtdite n-->");
    scanf("%lf", &n);
    printf("Vvedite i-->");
    scanf("%d", &i);
 
    for(n=2;n<=10;n++)
        for(i=1;i<10;i++)
        s=(i+((i+1)*pow((n+1)\2))*pow(n\2);
        printf("RESULTAT S=%lf",s);
    
    return 0;
}
Я может чего нибудь важного тут не замечаю и сам принцип не понимаю, помогите пожалуйста, я уже совсем запутался :\
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
28.06.2012, 11:06     Циклы, подскажите пожалуста #2
Вот посмотри, не проверял только правильность вычислений.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
using namespace std;
int main ()
{
    int n;
    double s,f,sum;
    cout<<"Enter n=";
    cin>>n;
    s=0;
    for(double i=n;i>=1;i--)
    {
     f=pow(i+s,1.0/(i+1.0));
     s=f;                
    }
    cout<<"Koren="<<s;
    getch();
}
nerei
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 6
28.06.2012, 13:54  [ТС]     Циклы, подскажите пожалуста #3
Да вычисляет, но начиная с n=6 считает одно и то же значение равное 1.58454
Я думал кстати о шаге "--" но только ещё сильнее запутался, так правильней наверное, начинать считать по порядку, начиная с заданного элемента.
Хотел спросить по поводу формулы, я только недавно за с++ сел поэтому для меня тут много непонятного, вот pow это же возведение в степень, x возводится в y? т.е. x*pow(y) ? Почему тогда тут перед pow не стоит значение ? И я правильно понимаю если в функуции pow в скобках стоят через запятую два выражения тут ("+". "/"), то они будут по очереди выполнятся или как? Не пойму...
Можете немного объяснить эту формулу, мне действительно интересно, к примеру почему дробь такая, ведь корень из выражения, это выражение в степени 1\2, n^1\2, а тут получается переменный знаменатель, ничего не пойму ... Извините за назойливость, просто для меня важно понять смысл, не хочу это так оставлять, я себе всю голову уже сломал с этой задачкой :\
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 13:59     Циклы, подскажите пожалуста #4
Цитата Сообщение от nerei Посмотреть сообщение
x возводится в y? т.е. x*pow(y) ? Почему тогда тут перед pow не стоит значение ?
Функция pow принимает 2 аргумента: основание и показатель степени соответственно. По свойству степени с рациональным показателем a1/b=b-ый корень из a.

Цитата Сообщение от nerei Посмотреть сообщение
если в функуции pow в скобках стоят через запятую два выражения тут ("+". "/"), то они будут по очереди выполнятся или как?
Запятая разделяет аргументы функции. Порядок вычисления аргументов не установлен стандартом.

Цитата Сообщение от nerei Посмотреть сообщение
но начиная с n=6 считает одно и то же значение равное 1.58454
Возможно, приращения достаточно малы?
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
28.06.2012, 14:02     Циклы, подскажите пожалуста #5
pow - возводит в степень, формат такой pow(a,b), т.е. а в степени b. Если вместо b будет 1/b то это уже корень. Изменяется потому, что в формуле корень не только квадратный, а кубический и т.д. в зависимости от числа n.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 14:08     Циклы, подскажите пожалуста #6
Цитата Сообщение от nerei Посмотреть сообщение
Я думал кстати о шаге "--" но только ещё сильнее запутался, так правильней наверное, начинать считать по порядку, начиная с заданного элемента.
Мы вычисляем pow(1+pow(2+...,1/3),1/2)*
Поэтому мы идём от n к 1 (корень извлекается в обратном порядке же).

*как раз http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{1/b} = http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt[b]{a}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 14:30     Циклы, подскажите пожалуста
Еще ссылки по теме:

C++ Подскажите как правильно сделать ! пожалуста с обяснением !
Расшифруйте ошибку, пожалуста C++
C++ Прокомментируйте пожалуста программу
Постигаю c++ и не могу в здешние циклы, а ещё в тип char кто знает как они работают подскажите C++

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

Или воспользуйтесь поиском по форуму:
nerei
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 6
28.06.2012, 14:30  [ТС]     Циклы, подскажите пожалуста #7
Всё понял, спасибо за разъяснение, стало понятней, я просто сам зациклился на свойствах степени и тупо возводил корень в переменную степень т.е. как если бы (n^(1\2))^n тут я думал что числитель будет меняться а знаменатель будет постоянно делится на 2. Блин правда протупил, спасибо. )
Yandex
Объявления
28.06.2012, 14:30     Циклы, подскажите пожалуста
Ответ Создать тему
Опции темы

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