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

программа с++ на do while с условием - C++

Восстановить пароль Регистрация
 
Nikaslovvelo
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 7
11.02.2014, 12:21     программа с++ на do while с условием #1
Дано натуральное число N. Вычислить
=(1-1/2^2)(1-1/3^2)...(1-1/n^2), где n>2
помогите!!
написать программу с++ на do while с условием
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2014, 12:21     программа с++ на do while с условием
Посмотрите здесь:

C++ Циклы с условием
C++ Момогите с условием
квадраты с условием!!! C++
цикл с условием C++
While-цикл с условием. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 12:29     программа с++ на do while с условием #2
Для начала вам нужно знать сколько будет у вас значений, то есть определиться при каком условии должен быть выход из цикла, я подразумевал здесь что параметром n передается число от 2 до предположим 10 и соответственно будет посчитано 10 - 2 значений
C++
1
2
3
4
5
6
7
8
9
double retChislo (int n)
{
    double k=1;
    do {
        k *= 1-1/(n*n);
        n--
    }while(n-2);
    return k; 
}
Как то так
Mihail Samohval
5 / 5 / 1
Регистрация: 06.06.2013
Сообщений: 23
11.02.2014, 12:50     программа с++ на do while с условием #3
Тут куча вариантов красивых - можно задавать просто величину n, а можно например, задать погрешность (1-1/n^2). Часто в инженерных расчетах важна именно погрешность вычисления. Ну а дальше вариантов тьма - пока эта же скобка не будет меньше 1% от уже полученного числа и т.д.
Nikaslovvelo
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 7
11.02.2014, 13:07  [ТС]     программа с++ на do while с условием #4
Здесь вот алгоритм, мне кажется совсем не та программа у вас(
Миниатюры
программа с++ на do while с условием  
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 13:16     программа с++ на do while с условием #5
Так и изначально нужно говорить о том что это подразумевалось, тут то телепатов нет))))
Тогда можно функцию немного изменить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
double retChislo (float eps, int n=1000)
{
    double z, k=1-1.0/4;
    int c = 3;
    do {
        z = k*(1-1.0/(c*c));
        if (eps <= abs (z-k)) return z;
        k = z;
        c++;
    }while(c<n);
    return -1; 
}
Вот немного другая функция где можно задавать количество итераций, либо не задавать и по умолчанию из будет 1000, если ряд не сойдется то вернет -1 и можно судить что ряд не сошелся, а можно вернуть значение соответствующее наилучшему схождению ряда, но тогда функцию нужно доработать. А так если погрешность окажется будет меньше или равной заданной она вернет результат.

Добавлено через 4 минуты
Цитата Сообщение от Nikaslovvelo Посмотреть сообщение
Здесь вот алгоритм, мне кажется совсем не та программа у вас(
Вообще такой же единственное в первой программе я просто начинал с конца, просто так удобней, когда while (flase) а как известно в с++ false эквивалентен 0, происходит выход из цикла, и не нужны никакие операции сравнения, вот и вся разница

Добавлено через 2 минуты
Также могу придраться к вашему алгоритму там отсутствует операция инкремента i
Mihail Samohval
5 / 5 / 1
Регистрация: 06.06.2013
Сообщений: 23
11.02.2014, 13:21     программа с++ на do while с условием #6

ShadowFirst, я не поправлял ваш вариант решения, а хотел дополнить, что возможны различные варианты выхода из цикла, поскольку, действительно, в первоначальном решении не сказано, откуда и по какому принципу брать n.


Мне кажется, или и первый алгоритм вполне рабочий?
ShadowFirst
11.02.2014, 13:25     программа с++ на do while с условием
  #7

Не по теме:

Блин, извини Mihail Samohval, что то стукнуло в голову что ты автор темы, вот и ответил соответственно насчет погрешности))))

Yandex
Объявления
11.02.2014, 13:25     программа с++ на do while с условием
Ответ Создать тему
Опции темы

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