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

Вычисление числа П - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите алгоритм решения задачи http://www.cyberforum.ru/cpp-beginners/thread400498.html
Подскажите пожалуйста алгоритм решения этой задачи: Дано n точек на плоскости. Указать (n-1)-звенную несамопересекающуюся незамкнутую ломаную, проходящую через все эти точки (соседним отрезкам ломаной разрешается лежать на одной прямой). Если я не ошибаюсь, то эта задача на сортировку. Заранее спасибо.
C++ Задачка с матрицой. Данная целочисленная прямоугольная матриця, определить: -количество строк, содержащих хотя бы один нулевой элемент; -номер столбца, в котором находится самая длинная серия одинаковых элементов. Спасибо. http://www.cyberforum.ru/cpp-beginners/thread400497.html
C++ Подсчитать количество элементов массива, не попадающих в заданный интервал
дана последовательность целых чисел.подсчитать количество элементов не попадающих в заданный интервал
Найти первый отрицательный элемент после max-го элемента массива.не могу найти ошибку ( среда с++ builder 6) C++
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #pragma argsused #include <stdio.h> #include <math.h> #include <conio.h> //---------------------------------------------------------------------------
C++ Вычислить S=1+3+5+9...1999 http://www.cyberforum.ru/cpp-beginners/thread400486.html
Здравсвуйте ! Написал код вроде все правильно но программа не работает помогите пожалуйста #include <iostream> #include <conio.h> using namespace std; int main() { int s = 0;
C++ Запись файла в массив и чтение из него #include <conio.h> #include <stdio.h> void vvodznach ( int n, int m, double A ) { int i, j; for ( i = 0; i < n; i++ ) for ( j = 0; j < m; j++ ) подробнее

Показать сообщение отдельно
Sobaka_ru
2 / 2 / 0
Регистрация: 16.12.2010
Сообщений: 75
09.12.2011, 13:12  [ТС]     Вычисление числа П
А если так?
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <time.h> 
#include <stdio.h> 
#include <malloc.h> 
#include <math.h> 
#include <conio.h> 
long B=10000; /* Working base */ 
long LB=4;    /* Log10(base)  */ 
long MaxDiv=450;  /* about sqrt(2^31/B) */ 
/* 
** Set the big real x to the small integer Integer  
*/ 
void SetToInteger (long n, long *x, long Integer) { 
  long i; 
  for (i=1; i<n; i++) x[i] = 0; 
  x[0] = Integer; 
} 
/* 
** Is the big real x equal to zero ? 
*/ 
long IsZero (long n, long *x) { 
  long i; 
  for (i=0; i<n; i++)   
    if (x[i])   return 0; 
        return 1; 
} 
/* 
** Addition of big reals : x += y 
**  Like school addition with carry management 
*/ 
void Add (long n, long *x, long *y) { 
  long carry=0, i; 
  for (i=n-1; i>=0; i--) { 
    x[i] += y[i]+carry; 
    if (x[i]<B) carry = 0; 
    else { 
      carry = 1; 
      x[i] -= B; 
    } 
  }   
} 
/* 
** Substraction of big reals : x -= y 
**  Like school substraction with carry management 
**  x must be greater than y 
*/ 
void Sub (long n, long *x, long *y) { 
  long i; 
  for (i=n-1; i>=0; i--) { 
    x[i] -= y[i]; 
                if (x[i]<0) { 
                  if (i) {       
        x[i] += B; 
        x[i-1]--; 
      } 
                } 
  }   
} 
/* 
** Multiplication of the big real x by the integer q  
** x = x*q. 
**  Like school multiplication with carry management 
*/ 
void Mul (long n, long *x, long q) { 
  long carry=0, xi, i; 
  for (i=n-1; i>=0; i--) { 
    xi  = x[i]*q;                
    xi += carry;                 
    if (xi>=B) { 
      carry = xi/B; 
      xi -= (carry*B); 
    } 
    else  
      carry = 0; 
    x[i] = xi; 
        }   
} 
/* 
** Division of the big real x by the integer d  
** The result is y=x/d. 
**  Like school division with carry management 
**  d is limited to MaxDiv*MaxDiv. 
*/ 
void Div (long n, long *x, long d, long *y) { 
  long carry=0, xi, q, i; 
  for (i=0; i<n; i++) { 
    xi    = x[i]+carry*B; 
    q     = xi/d; 
    carry = xi-q*d;    
    y[i]  = q;         
  }   
} 
/* 
** Find the arc cotangent of the integer p (that is arctan (1/p)) 
**  Result in the big real x (size n) 
**  buf1 and buf2 are two buffers of size n 
*/ 
void arccot (long p, long n, long *x, long *buf1, long *buf2) { 
  long p2=p*p, k=3, sign=0; 
  long *uk=buf1, *vk=buf2; 
  SetToInteger (n, x, 0); 
  SetToInteger (n, uk, 1);      /* uk = 1/p */ 
  Div (n, uk, p, uk); 
  Add (n, x, uk);               /* x  = uk */ 
 
  while (!IsZero(n, uk)) { 
    if (p<MaxDiv) 
      Div (n, uk, p2, uk);  /* One step for small p */ 
    else { 
      Div (n, uk, p, uk);   /* Two steps for large p (see division) */ 
      Div (n, uk, p, uk);   
    } 
    /* uk = u(k-1)/(p^2) */ 
    Div (n, uk, k, vk);       /* vk = uk/k  */ 
    if (sign) Add (n, x, vk); /* x = x+vk   */ 
    else Sub (n, x, vk);      /* x = x-vk   */ 
    k+=2; 
    sign = 1-sign; 
  } 
} 
/* 
** Print the big real x 
*/ 
void Print (long n, long *x) { 
  long i;  
  printf ("%d.", x[0]); 
  for (i=1; i<n; i++) { 
    printf ("%.4d", x[i]); 
    if (i%25==0) printf ("%8d\n", i*4); 
  } 
  printf ("\n"); 
} 
/* 
** Computation of the constant Pi with arctan relations 
*/ 
void main () {   
  clock_t endclock, startclock;  
  long NbDigits=10000, NbArctan; 
  long p[10], m[10]; 
  long size=1+NbDigits/LB, i; 
  long *Pi      = (long *)malloc(size*sizeof(long)); 
  long *arctan  = (long *)malloc(size*sizeof(long)); 
  long *buffer1 = (long *)malloc(size*sizeof(long)); 
  long *buffer2 = (long *)malloc(size*sizeof(long));  
  startclock = clock();     
  /* 
  ** Formula used:  
  **    
  **   Pi/4 = 12*arctan(1/18)+8*arctan(1/57)-5*arctan(1/239) (Gauss) 
  */ 
  NbArctan = 3; 
  m[0] = 12; m[1] = 8;  m[2] = -5; 
  p[0] = 18; p[1] = 57; p[2] = 239;  
  SetToInteger (size, Pi, 0); 
  /* 
  ** Computation of Pi/4 = Sum(i) [m[i]*arctan(1/p[i])]  
  */ 
  for (i=0; i<NbArctan; i++) { 
    arccot (p[i], size, arctan, buffer1, buffer2); 
    Mul (size, arctan, abs(m[i])); 
    if (m[i]>0) Add (size, Pi, arctan);   
    else        Sub (size, Pi, arctan);   
  } 
  Mul (size, Pi, 4); 
  endclock = clock (); 
  Print (size, Pi);  /* Print out of Pi */ 
  printf ("Computation time is : %9.2f seconds\n",   
         (float)(endclock-startclock)/(float)CLOCKS_PER_SEC );  
  free (Pi); 
  free (arctan); 
        free (buffer1); 
        free (buffer2); 
        getch(); 
         
}
Мне скинули, только ниче тут не пойму... Если кто сможет объяснить, буду очень признателен
 
Текущее время: 14:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru