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

Зацикливание в программе - C++

Восстановить пароль Регистрация
 
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 433
Завершенные тесты: 1
28.02.2013, 20:52     Зацикливание в программе #1
Задание:
Протабулировать функцию, использовав цикл с предусловием. Аргументы и результаты вывести на экран в виде таблицы (для значений х, в которых функция не существует вывести "-" и использовать оператор перехода на следующую итерацию).членов ряда с точностью ε для заданной последовательности х. Во внешнем цикле для подачи аргумента х использовать оператор цикла с предусловием, во внутреннем - вычислить сумму для конкретного х с точностью до ε, используя оператор цикла с послеусловие; вывести на печать значение S, х, n.

Думаю,что идёт зацикливание.
Вот код,который я написал.
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 "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
 using namespace std;
 
int main()
{
    double x,n,S;
   x=0.3;
    cout<<"Input n"<<endl; 
    cin>>n;
  while (x<=0.7)
  {
      do
      {
           S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
      } while (x<=0.7);
   x+=0.1;
  }
  cout.precision(5); 
  cout<<S;
 getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 20:52     Зацикливание в программе
Посмотрите здесь:

C++ Зацикливание
Зацикливание в программе C++
зацикливание в C++ C++
Зацикливание Функции C++
Зацикливание класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
28.02.2013, 21:06     Зацикливание в программе #2
C++
1
2
3
4
do
      {
           S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
      } while (x<=0.7);
Здесь вам нужно считать сумму ряда с заданной погрешностью e, поэтому условие while (x<=0.7); неверное.

Добавлено через 44 секунды
причем зацикливаетесь вы именно в этом цикле
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 21:09     Зацикливание в программе #3
В do while x не меняется, поэтому и нет выхода. И S задайте первоначальное значение, а то компилятор ругается.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
28.02.2013, 21:10     Зацикливание в программе #4
должно быть как-то так
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double x,n,S;
    x=0.3;
    cout<<"Input n"<<endl;
    cin>>n;
    double e=0;
    cout << "eps ? ";
    cin >>e;
    while (x<=0.7)
    {
        do
        {
            S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
            eps = ...
 
        } while (eps>e);
        x+=0.1;
    }
    cout.precision(5);
    cout<<S;
    return 0;
}
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
28.02.2013, 21:12     Зацикливание в программе #5
Вырви глаз
Это что?
C++
1
2
3
4
5
6
7
8
9
10
while (x<=0.7)
    {
        do
        {
            S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
            eps = ...
 
        } while (e<=eps);
        x+=0.1;
    }
В обще верно будет
C++
1
2
3
4
5
  while (x<=0.7)
  {
           S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
   x+=0.1;
 }
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 433
Завершенные тесты: 1
28.02.2013, 21:41  [ТС]     Зацикливание в программе #6
Цитата Сообщение от Kill100 Посмотреть сообщение
Вырви глаз
Это что?
C++
1
2
3
4
5
6
7
8
9
10
while (x<=0.7)
    {
        do
        {
            S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
            eps = ...
 
        } while (e<=eps);
        x+=0.1;
    }
В обще верно будет
C++
1
2
3
4
5
  while (x<=0.7)
  {
           S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
   x+=0.1;
 }
Мне нужно цыкл в цыкле.

Добавлено через 6 минут
Цитата Сообщение от Kill100 Посмотреть сообщение
Вырви глаз
Это что?
C++
1
2
3
4
5
6
7
8
9
10
while (x<=0.7)
    {
        do
        {
            S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
            eps = ...
 
        } while (e<=eps);
        x+=0.1;
    }
В обще верно будет
C++
1
2
3
4
5
  while (x<=0.7)
  {
           S+=(((n*n)+1)/(n))*((pow(double(x), n))/(pow(double(2), n)));
   x+=0.1;
 }
eps это что?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
28.02.2013, 22:58     Зацикливание в программе #7
Цитата Сообщение от Kill100 Посмотреть сообщение
Вырви глаз
Это что?
по условию ему нужно считать формулу через ряд, если я правильно понял, с определенной точностью в каждой точке. Так что ничего вырывать не нужно, особенно глаз, для здоровья вредно.

triadec_96, 'это погрешность, которую вы получаете и сравниваете с заданной. Например, вычисляете два последовательных значения и вычисляете абсолютное значение разности, вам, скорее всего нужно еще n менять во внутреннем цикле, например умножать на 2, или прибавлять что-то, все зависит от вашей функции.
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 433
Завершенные тесты: 1
01.03.2013, 01:56  [ТС]     Зацикливание в программе #8
Цитата Сообщение от vua72 Посмотреть сообщение
вам, скорее всего нужно еще n менять во внутреннем цикле, например умножать на 2, или прибавлять что-то, все зависит от вашей функции.
Видимо в условии не написано что делать с n.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2013, 10:47     Зацикливание в программе
Еще ссылки по теме:

зацикливание C++
Зацикливание C++
Зацикливание C++

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

Или воспользуйтесь поиском по форуму:
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
01.03.2013, 10:47     Зацикливание в программе #9
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
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
using namespace std;
 
int main() {
    double x=0.3,
            n=1,
            S=0,
            Sk=0,
            eps=0.000001;
    cout << "\n Summa ryada\n";
    while (x <= 0.7) {
        n=1, Sk=0, S=0;
        do {
            Sk = (((n * n) + 1) / (n))
                    * ((pow(x, n)) / (pow(2, n)));
            S+=Sk;
        n++;
        } while (Sk>eps);
        cout << "x= "<<x<<" S="<<S<<" n="<<n<<endl;
        x += 0.1;
    }
    return 0;
}
Yandex
Объявления
01.03.2013, 10:47     Зацикливание в программе
Ответ Создать тему
Опции темы

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