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

Факториалы... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Интерактивная сегментация http://www.cyberforum.ru/cpp-beginners/thread216711.html
Нужна программа для курсовой на любом языке программирования на тему: Интерактивная сегментация. Помогите, пожалуйста
C++ найти адрес первого нечетного числа в матрице for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(x%2!=0) { p=i; p=j; break; } } http://www.cyberforum.ru/cpp-beginners/thread216698.html
C++ цикл for
задача: Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k. # include <iostream.h> #include <conio.h> void main() { clrscr(); int i,j,n,k,l,d,v; cout<<"vvedite k i n"<<endl; cin>>k>>n; int n1=1; n2;
классы+друж. функции C++
Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций инициализации: числами, строкой (например, «23:59:59»), секундами и временем. Обязательными операциями являются: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного количества секунд, ...
C++ типизир.файл http://www.cyberforum.ru/cpp-beginners/thread216690.html
задача: Дан файл из вещественных чисел. Описать функцию, возвращающую предпоследний элемент файла (если такой есть). # include <iostream.h> # include <stdio.h> float GetPlast() { FILE *f; float c=-1,r; f=fopen("text.txt","r"); while(!feof(f)) { r=c;
C++ распечатать список учителей. задача:Распечатать список тех учителей школы, которые преподают математику и информатику, указать стаж их работы и недельную нагрузку. #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<string.h> void main() { clrscr(); struct teatcher{ подробнее

Показать сообщение отдельно
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
24.12.2010, 23:11     Факториалы...
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Напильнег, зачем новое слагаемое искать так сложно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  double sn, sni;
  int n, i, j;
 
  for (n=12; n<=24; n+=4) {
    for ( sni=1./(2*n-1), sn=1.+1./(2*n-1), i=2*n-1; i>n+1; i--) {
                sni*=i;
      for (j=2*i-2*n-1; j<=2*i-2*n; j++) 
             sni/=j;
      sn+=sni;
    }
    printf("S[%2d]=%.6f\n", n, sn);
  }
    
  system("pause");
    
  return(0);
}
"и никаких сусликов".
Если ЭТО называется "просто", то мы наверное русский язык в сильно разных бурсах учили О_о

Вот тебе реальне простое "хвостовое" решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  double sn, sni;
  int n, i;
 
  for (n=12; n<=24; n+=4) {
    for ( sni=1.0, sn=1.0, i=n-1; i>=1; i--) {
      sni=sni/(2*i+1)/(2*i+2)*(n+i+1);
      sn+=sni;
    }
    printf("S[%2d]=%.6f\n", n, sn);
  }
    
  system("pause");
    
  return(0);
}
- как видно, тут внутреннего цикла вообще нет, Sni вычисляются по рекурентным образом.

Но на самом деле в данном случае так (с хвоста) делать не надо. Вот эффективное и со всех сторон корректное решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  double sn, sni;
  int n, i, j;
 
  for (n=12; n<=24; n+=4) {
    for (sni=1, j=3; j<=n+1; j++) sni/=j;
    for (sn=sni, i=2; i<=n; i++) {
      sni=sni*(2*i-1)*(2*i)/(n+i);
      sn+=sni;
    }
    printf("S[%2d]=%.6f\n", n, sn);
  }
    
  system("pause");
    
  return(0);
}
Изображения
 
 
Текущее время: 09:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru