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

построение таблицы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
29.09.2011, 22:18     построение таблицы #1
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
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main ()
{
    const int MaxIter=500;
    double  x,eps, dx, Xk, Xn,n;
    cout<<"\nffedite argument i to4nost' :";
    cout<<"\nVVedite Xn"<<endl;
    cout<<"\nVVedite Xk"<<endl;
    cout<<"\nVVedite dx"<<endl;
        cin>>x>>eps>>Xn>>Xk>>dx;
        cout<<"_______________________________"<<endl;
        cout<<"|"<<setw(5)<<"x"<<setw(5)<<"|"<<setw(5)<<"y"<<setw(5)<<"|"<<setw(5)<<"n"<<setw(5)<<"|"<<endl;
        cout<<"_______________________________"<<endl;
            for(x=Xn; x<=Xk; x+=dx);
    bool done= true;
    double ch=1,y=ch;
        for(int n=0; fabs(ch)>eps; n++)
        {
            ch*=((-2)*n)/(2*x*n+x);
            y+=ch;
            if(n>MaxIter)
            {
                
                cout<<"|"<<setw(2)<<endl;
                cout<<"\nryad rasxoditsya!";
                done= false; break;
            }
        }
        if(done)
        {
            
            cout<<"\nZna4enie f-ii:"<<y<<"dlya x="<<x<<endl;
            cout<<"vi4islino posle"<<n<<"itersciy"<<endl;
            cout<<"|"<<setw(2)<<endl;
        }
        return 0;
}
помогите пожалуйста построить таблицу, так чтоб в ней выводилось значение x y n.
X как видно в условии должен меняться.С++ изучаем в универе а что да как толком не объясняют.
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 22:18     построение таблицы
Посмотрите здесь:

построение графика C++
Даны таблицы А[1..n] ,В[1..m]. Построить таблицу С в которой сначала размещаются все элементы А, затем все элементы таблицы В C++
C++ Удаление записи из таблицы, с проверкой на совпадение с записями из другой таблицы.
Построение C++
C++ Построение сильноветвящегося дерева на основе таблицы отношений
Построение таблицы значений функции y=f(x) для x на отрезке [a;b] с шагом h C++
Построение многоугольника C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.10.2011, 05:51     построение таблицы #21
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
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
double func(double x, double eps, long &n);
 
int main()
{
    double xn, xk, dx, x;
    double eps;
    long n;
    
    xn = 1;
    xk = 100;
    dx = 2;
    eps = 0.1;
    
    cout << setw(10) << "x" << setw(20) << "y" << setw(10) << "n" << endl;
    for (x = xn; x <= xk; x += dx)
        cout << setw(10)
             << x
             << setw(20)
             << func(x, eps, n)
             << setw(10)
             << n
             << endl;
    
    return 0;
}
 
double func(double x, double eps, long &n)
{
    double summ;
   
    summ = 0.0;
    for (n = 0; fabs(summ) > eps; n++)
        summ += -2 * n / (2 * x * n + x);
    return summ;
}
выдаёт нули
Код
[guest@localhost tests]$ .iso++ t.cpp -o t
[guest@localhost tests]$ ./t
         x                   y         n
         1                   0   2711540
         3                   0         0
         5                   0         0
         7                   0         0
         9                   0         0
        11                   0         0
        13                   0         0
        15                   0         0
        17                   0         0
        19                   0         0
        21                   0         0
        23                   0         0
        25                   0         0
        27                   0         0
        29                   0         0
        31                   0         0
        33                   0         0
        35                   0         0
        37                   0         0
        39                   0         0
        41                   0         0
        43                   0         0
        45                   0         0
        47                   0         0
        49                   0         0
        51                   0         0
        53                   0         0
        55                   0         0
        57                   0         0
        59                   0         0
        61                   0         0
        63                   0         0
        65                   0         0
        67                   0         0
        69                   0         0
        71                   0         0
        73                   0         0
        75                   0         0
        77                   0         0
        79                   0         0
        81                   0         0
        83                   0         0
        85                   0         0
        87                   0         0
        89                   0         0
        91                   0         0
        93                   0         0
        95                   0         0
        97                   0         0
        99                   0         0
[guest@localhost tests]$
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2011, 06:28     построение таблицы #22
accept, а почему вся сумма сравнивается с погрешностью?

Цитата Сообщение от accept Посмотреть сообщение
выдаёт нули
потому, что значение первого члена суммы (n = 0) равно 0, что заведомо меньше любого положительного эпсилон
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
05.10.2011, 09:01  [ТС]     построение таблицы #23
Цитата Сообщение от Nameless One Посмотреть сообщение
accept, а почему вся сумма сравнивается с погрешностью?


потому, что значение первого члена суммы (n = 0) равно 0, что заведомо меньше любого положительного эпсилон
и что он теперь всегда 0 будет выдавать? я вписал n=1 мало что изменилось... у все равно не меняется
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.10.2011, 10:11     построение таблицы #24
Цитата Сообщение от Nameless One
accept, а почему вся сумма сравнивается с погрешностью?
нигде не сказано, к чему относится точность

тут правил десять минут, по несколько версий постил
пришлось разделить вывод и добавить maxiter
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
double func(double x, double eps, long &n, int maxn);
 
int main()
{
    double xn, xk, dx, x;
    double eps;
    long n;
    const int maxiter = 500;
    
    xn = 1;
    xk = 100;
    dx = 2;
    eps = 0.1;
    
    cout << setw(10) << "x" << setw(20) << "y" << setw(10) << "n" << endl;
    for (x = xn; x <= xk; x += dx) {
        cout << setw(10) << x << setw(20) << func(x, eps, n, maxiter);
        cout << setw(10) << n << endl;
    }
    
    return 0;
}
 
double func(double x, double eps, long &n, int maxn)
{
    double summ, v;
 
    summ = v = 0.0;
    n = 0;
    do {
        summ += v;
        n++;
        v = -2 * n / (2 * x * n + x);
    } while (n < maxn && fabs(v) > eps);
    
    //summ = 0.0;
    //for (n = 0; fabs(summ) > eps; n++)
    //    summ += -2 * n / (2 * x * n + x);
        
    return summ;
}
Код
[guest@localhost tests]$ .iso++ t2.cpp -o t
[guest@localhost tests]$ ./t
         x                   y         n
         1            -495.911       500
         3            -165.304       500
         5            -99.1822       500
         7                   0         1
         9                   0         1
        11                   0         1
        13                   0         1
        15                   0         1
        17                   0         1
        19                   0         1
        21                   0         1
        23                   0         1
        25                   0         1
        27                   0         1
        29                   0         1
        31                   0         1
        33                   0         1
        35                   0         1
        37                   0         1
        39                   0         1
        41                   0         1
        43                   0         1
        45                   0         1
        47                   0         1
        49                   0         1
        51                   0         1
        53                   0         1
        55                   0         1
        57                   0         1
        59                   0         1
        61                   0         1
        63                   0         1
        65                   0         1
        67                   0         1
        69                   0         1
        71                   0         1
        73                   0         1
        75                   0         1
        77                   0         1
        79                   0         1
        81                   0         1
        83                   0         1
        85                   0         1
        87                   0         1
        89                   0         1
        91                   0         1
        93                   0         1
        95                   0         1
        97                   0         1
        99                   0         1
[guest@localhost tests]$

не проверяется на x = 0

если вывод не разделить, то выводится значение n до вызова функции (случайное значение)
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
05.10.2011, 13:06  [ТС]     построение таблицы #25
если брать шаг меньше 1, то ответы получаются, но n=500 и ближе к концу n=1 y=0 несколько ответов подряд
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2011, 13:11     построение таблицы #26
takewa, а с чего ты взял, что это ошибка? Все дело в разложении
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
05.10.2011, 13:44  [ТС]     построение таблицы #27
разложении примера?
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2011, 13:59     построение таблицы #28
В разложении функции (значение которой мы и считаем)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.10.2011, 01:56     построение таблицы #29
Цитата Сообщение от takewa
если брать шаг меньше 1
чего ?
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
06.10.2011, 13:05  [ТС]     построение таблицы #30
dx=0.1
вот такое вот получается только n=500 как так??
Миниатюры
построение таблицы  
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
06.10.2011, 22:08  [ТС]     построение таблицы #31
может быть такое??
Миниатюры
построение таблицы  
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.10.2011, 01:35     построение таблицы #32
dx - целое число, из 0.1 сохраняется только целая часть
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
07.10.2011, 16:25  [ТС]     построение таблицы #33
C++
1
double  x,eps, dx, Xk, Xn,n;
dx действительное число
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.10.2011, 12:47     построение таблицы #34
Цитата Сообщение от takewa
dx действительное число
это я перепутал

новая версия
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
30
31
32
33
34
35
36
37
38
39
40
41
 
#include <iostream>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
double func(double x, double eps, long &n, int maxn);
 
int main()
{
    double xn, xk, dx, x, y;
    double eps;
    long n;
    const int maxiter = 500;
    
    xn = 1.0;
    xk = 100.0;
    dx = 0.5;
    eps = 0.1;
    
    cout << setw(10) << "x" << setw(20) << "y" << setw(10) << "n" << endl;
    for (x = xn; x <= xk; x += dx) {
        y = func(x, eps, n, maxiter);
        cout << setw(10) << x << setw(20) << y << setw(10) << n << endl;
    }
    
    return 0;
}
 
double func(double x, double eps, long &n, int maxn)
{
    double summ, val;
    
    summ = 0.0;
    for (n = 1;
         n < maxn && fabs(val = -2 * n / (2 * x * n + x)) > eps;
         n++)
        summ += val;
    return summ;
}
Код
[guest@localhost tests]$ .iso++ t2.cpp -o t
[guest@localhost tests]$ ./t
         x                   y         n
         1            -495.911       500
       1.5            -330.607       500
         2            -247.955       500
       2.5            -198.364       500
         3            -165.304       500
       3.5            -141.689       500
         4            -123.978       500
       4.5            -110.202       500
         5            -99.1822       500
       5.5            -90.1656       500
         6            -82.6518       500
       6.5             -76.294       500
         7                   0         1
       7.5                   0         1
         8                   0         1
       8.5                   0         1
         9                   0         1
       9.5                   0         1
        10                   0         1
      10.5                   0         1
        11                   0         1
      11.5                   0         1
        12                   0         1
      12.5                   0         1
        13                   0         1
      13.5                   0         1
        14                   0         1
      14.5                   0         1
        15                   0         1
      15.5                   0         1
        16                   0         1
      16.5                   0         1
        17                   0         1
      17.5                   0         1
        18                   0         1
      18.5                   0         1
        19                   0         1
      19.5                   0         1
        20                   0         1
      20.5                   0         1
        21                   0         1
      21.5                   0         1
        22                   0         1
      22.5                   0         1
        23                   0         1
      23.5                   0         1
        24                   0         1
      24.5                   0         1
        25                   0         1
      25.5                   0         1
        26                   0         1
      26.5                   0         1
        27                   0         1
      27.5                   0         1
        28                   0         1
      28.5                   0         1
        29                   0         1
      29.5                   0         1
        30                   0         1
      30.5                   0         1
        31                   0         1
      31.5                   0         1
        32                   0         1
      32.5                   0         1
        33                   0         1
      33.5                   0         1
        34                   0         1
      34.5                   0         1
        35                   0         1
      35.5                   0         1
        36                   0         1
      36.5                   0         1
        37                   0         1
      37.5                   0         1
        38                   0         1
      38.5                   0         1
        39                   0         1
      39.5                   0         1
        40                   0         1
      40.5                   0         1
        41                   0         1
      41.5                   0         1
        42                   0         1
      42.5                   0         1
        43                   0         1
      43.5                   0         1
        44                   0         1
      44.5                   0         1
        45                   0         1
      45.5                   0         1
        46                   0         1
      46.5                   0         1
        47                   0         1
      47.5                   0         1
        48                   0         1
      48.5                   0         1
        49                   0         1
      49.5                   0         1
        50                   0         1
      50.5                   0         1
        51                   0         1
      51.5                   0         1
        52                   0         1
      52.5                   0         1
        53                   0         1
      53.5                   0         1
        54                   0         1
      54.5                   0         1
        55                   0         1
      55.5                   0         1
        56                   0         1
      56.5                   0         1
        57                   0         1
      57.5                   0         1
        58                   0         1
      58.5                   0         1
        59                   0         1
      59.5                   0         1
        60                   0         1
      60.5                   0         1
        61                   0         1
      61.5                   0         1
        62                   0         1
      62.5                   0         1
        63                   0         1
      63.5                   0         1
        64                   0         1
      64.5                   0         1
        65                   0         1
      65.5                   0         1
        66                   0         1
      66.5                   0         1
        67                   0         1
      67.5                   0         1
        68                   0         1
      68.5                   0         1
        69                   0         1
      69.5                   0         1
        70                   0         1
      70.5                   0         1
        71                   0         1
      71.5                   0         1
        72                   0         1
      72.5                   0         1
        73                   0         1
      73.5                   0         1
        74                   0         1
      74.5                   0         1
        75                   0         1
      75.5                   0         1
        76                   0         1
      76.5                   0         1
        77                   0         1
      77.5                   0         1
        78                   0         1
      78.5                   0         1
        79                   0         1
      79.5                   0         1
        80                   0         1
      80.5                   0         1
        81                   0         1
      81.5                   0         1
        82                   0         1
      82.5                   0         1
        83                   0         1
      83.5                   0         1
        84                   0         1
      84.5                   0         1
        85                   0         1
      85.5                   0         1
        86                   0         1
      86.5                   0         1
        87                   0         1
      87.5                   0         1
        88                   0         1
      88.5                   0         1
        89                   0         1
      89.5                   0         1
        90                   0         1
      90.5                   0         1
        91                   0         1
      91.5                   0         1
        92                   0         1
      92.5                   0         1
        93                   0         1
      93.5                   0         1
        94                   0         1
      94.5                   0         1
        95                   0         1
      95.5                   0         1
        96                   0         1
      96.5                   0         1
        97                   0         1
      97.5                   0         1
        98                   0         1
      98.5                   0         1
        99                   0         1
      99.5                   0         1
       100                   0         1
[guest@localhost tests]$
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
09.10.2011, 21:12  [ТС]     построение таблицы #35
это нормально то что нули и единицы??
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
09.10.2011, 21:39  [ТС]     построение таблицы #36
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
30
31
32
33
#include <iostream>
#include <cmath>
#include <iomanip>
#include <float.h>
using namespace std;
int main ()
{
const int MaxIter = 500;
double eps=DBL_EPSILON,Xn,Xk,dx;
Xn=1;
Xk=9;
dx=1;
cout<<"_____________________________________"<<endl;
cout<<"|"<<setw(6)<<"x"<<setw(6)<<"|"<<setw(6)<<"y"<<setw(6)<<"|"<<setw(6)<<"n"<<setw(6)<<"|"<<endl;
cout<<"_____________________________________"<<endl;
for(double x=Xn;x<=Xk;x+=dx)
{
double ch=1,y=ch;
for (int n=1; fabs(ch)>eps&&n<MaxIter;n++)
{
    ch*=(-2*n)/(x*(2*n+1));
    y+=ch;
}
if (n<MaxIter)
{
    cout <<"|"<<setw(6)<<x<<setprecision(1)<<setw(6)<<"|"<<setw(6)<<y<<setprecision(1)<<setw(6)<<"|"<<setw(6)<<n<<setw(6)<<"|"<<endl;
cout<<"_____________________________________"<<endl;
}
else cout <<"|"<<setw(6)<<x<<setprecision(1)<<setw(6)<<"|"<<setw(6)<<"Fail Ryad"<<setw(3)<<"|"<<setw(6)<<"Fail Ryad"<<setw(3)<<"|"<<endl;
cout<<"_____________________________________"<<endl;
}
return 0;
}
вот так сделал.
Это нормальные ответы??
Миниатюры
построение таблицы  
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 22:26     построение таблицы #37
Очень сомнительно, потому что всегда одинаковое значение функции

Добавлено через 32 минуты
А вообще уточните вид своего ряда, потому что если он у вас такой http://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{n=0}^{\propto } \frac{-2n}{x(2n+1)}, то этот ряд расходится при любом х
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
09.10.2011, 23:34  [ТС]     построение таблицы #38
Вот так выглядит сам пример, может я его не правильно разложил( в школе не проходили, а в универе по информатике задали)
Миниатюры
построение таблицы  
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
10.10.2011, 00:55     построение таблицы #39
ну так у тебя формула ряда совсем другая, а не та, которую ты вычисляешь в своей программе
Попробуй этот код
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
30
31
#include <iostream>
#include <iomanip>
#include <float.h>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
int main ()
{
const int MaxIter = 500;
double eps=DBL_EPSILON,Xn,Xk,dx;
Xn=2;
Xk=4;
dx=0.1;
cout<<"___________________________________________"<<endl;
cout<<"|"<<setw(5)<<"  x  "<<"  | "<<setw(11)<<"     y     "<<" | "<<setw(5)<<"  n  "<<" | "<<setw(11)<<"arctan(x)"<<" |"<<endl;
cout<<"___________________________________________"<<endl;
int n=1;
for(double x=Xn;x<=Xk+dx;x+=dx)
{
double ch=-1/x,y=0;
for (n=0; fabs(ch)>eps&&n<=MaxIter;n++)
{
        y+=ch;
        ch*=-(2*n+1)/x/x/(2*n+3);
}
y=y+M_PI/2;
   cout <<"| "<<setw(5)<<x<<" | "<<setw(11)<<y<<" | "<<setw(5)<<n-1<<" | "<<setw(11)<<atan(x)<<" |"<<endl;
cout<<"___________________________________________"<<endl;
}
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 01:08     построение таблицы
Еще ссылки по теме:

C++ Построение таблицы истинности
C++ Построение параболы
Построение таблицы значений для функции с разбиением отрезков C++
Построение таблицы истинности C++
C++ Построение графика

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

Или воспользуйтесь поиском по форуму:
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
10.10.2011, 01:08  [ТС]     построение таблицы #40
Спасибо большое)
Yandex
Объявления
10.10.2011, 01:08     построение таблицы
Ответ Создать тему
Опции темы

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