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

Для последовательности составить программу печати n-го элемента - C++

Восстановить пароль Регистрация
 
MacPrinCip
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 33
20.01.2014, 00:39     Для последовательности составить программу печати n-го элемента #1
Кто нибудь может подсказать, решая данную задачу, с чего начать???

Для последовательности http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1} = 1, {a}_{n+1} = n * {a}_{n} + 1/n составить программу печати n-го элемента в виде
обыкновенной несократимой дроби.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 00:39     Для последовательности составить программу печати n-го элемента
Посмотрите здесь:

C++ Составить программу печати всех циклов ориентированного графа
Prolog. Написать программу, которая осуществляет ввод с клавиатуры номера элемента и выводит значение для последовательности C++
C++ составить программу печати n-го элемента в виде обыкновенной несократимой дроби
Составить программу для нахождения минимального элемента массива C++
Составить программу для нахождения первого элемента массива меньше десяти и его номера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
20.01.2014, 02:25     Для последовательности составить программу печати n-го элемента #2
Необходимо посчитать переменную в цикле через рекуррентное соотношение.
Можно использовать вместо цикла рекурсию.
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
20.01.2014, 03:04     Для последовательности составить программу печати n-го элемента #3
у вас формула точно правильная?
gunslinger
случайный прохожий
 Аватар для gunslinger
1097 / 715 / 184
Регистрация: 20.07.2013
Сообщений: 1,969
20.01.2014, 05:05     Для последовательности составить программу печати n-го элемента #4
На Builder'e:
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
// ULONG - unsigned long
struct drob  // структура для хранения числителя и знаменателя дроби
{
  ULONG chis, znam;
} number;
int nod (ULONG x, ULONG y)  // наибольший общий делитель
{
  ULONG j = (x<y) ? x : y;  // находим минимальное из двух чисел
  int k;
  for (ULONG i = 1; i <= j; i++)
    if (x%i==0 && y%i==0)
      k=i;
  return k;
}
drob norm(drob z)  // сокращение дроби
{
  ULONG temp = nod(z.chis, z.znam);
  z.chis /= temp;
  z.znam /= temp;
  return z;
}
drob a(int n)  // дробь в общем виде (исходя из формулы)
{
  ULONG x, y;
  if (n==1)
  {
    x = 1;
    y = 1;
  }
  else
  {
    // при n>9 происходит "переполнение", получаются неправильные значения
    // для сравнения см. функцию test
    x = (n-1)*a(n-1).chis*(n-1)+a(n-1).znam;
    y = (n-1)*a(n-1).znam;
  }
  number.chis = x;
  number.znam = y;
  return number;
}
long double test(int n)  // для проверки
{
  return (n==1) ? 1 : (n-1)*test(n-1)+1./(n-1);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String res = "";
  for (int i = 1; i <= 9; i++)
  {
    a(i);
    res += "a" + IntToStr(i) + " = " + FloatToStr((0.+number.chis)/number.znam) + " = " + \
    IntToStr(norm(number).chis) + "/" + IntToStr(norm(number).znam) + "\n";
  }
  ShowMessage(res);
}
Миниатюры
Для последовательности составить программу печати n-го элемента  
MacPrinCip
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 33
20.01.2014, 07:52  [ТС]     Для последовательности составить программу печати n-го элемента #5
Цитата Сообщение от some_name Посмотреть сообщение
у вас формула точно правильная?
Для последовательности составить программу печати n-го элемента
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
20.01.2014, 09:44     Для последовательности составить программу печати n-го элемента #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Возможно лучше будет ввести новый класс дробь и перегрузить для него операции суммы и умножения на число. Не забываем при возможности сокращать дробь:
Кликните здесь для просмотра всего текста

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
#include<iostream>
#include<cmath>
void Adduction(long long int& x, long long int& y)
{
    long long int k = 2;
    do
    {
        if ((x%k == 0) && (y%k == 0))
          {  x /=k; y /= k; };
    }
    while(k++ < sqrt(x));
}
class Fraction
{
    long long int numerator;
    long long int denominator;
public:
    Fraction (int x, int y): numerator(x), denominator(y)
    {}
    Fraction& operator+ (Fraction Frac)
    {
        numerator = numerator * Frac.denominator + denominator * Frac.numerator;
        denominator = denominator * Frac.denominator;
        Adduction(numerator, denominator);
        return *this;
    }
    Fraction& operator* (int number)
    {
        numerator = numerator * number;
        Adduction(numerator, denominator);
        return *this;
    }
    void Show() const
    {
        std::cout << numerator << '/' << denominator << std::endl;
    }
};
int main()
{
    system("chcp 1251>0");
    int n;
    Fraction a(1, 1);
    std::cout << "Введите номер элемента: "; std::cin >> n;
    for (int k = 2; k <= n; k++)
        a = a * k + Fraction (1, k);
    a.Show();
 
    return 0;
}
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
20.01.2014, 11:04     Для последовательности составить программу печати n-го элемента #7
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
#include <iostream>
using namespace std;
 
int gcd( int a, int b )
{
    while ( a && b )
        if ( a %= b )
            b %= a;
    return a ? a : b;
}
 
int main()
{
    int n;
    int p = 1, q = 1; // p / q
    int g;
 
    cin >> n;
    for ( int i = 1; i < n; ++i )
    {
        p = p * i * i + q;
        q *= i;
        g = gcd( p, q );
        p /= g;
        q /= g;
    }
    cout << p << '/' << q << endl;
 
    return 0;
}
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
20.01.2014, 11:27     Для последовательности составить программу печати n-го элемента #8
Простой подсчет показывает, что ваша программа считает не верно. Проверьте...
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
20.01.2014, 12:18     Для последовательности составить программу печати n-го элемента #9
Ilot, может пример приведете, где не верно считает. кстати, a2=2, на всякий случай
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
20.01.2014, 12:47     Для последовательности составить программу печати n-го элемента #10
ya_noob, виноват.
У меня изменить к = 2 на к = 1:
C++
1
2
3
 
   for (int k = 1; k <= n; k++)
        a = a * k + Fraction (1, k);
MacPrinCip
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 33
20.01.2014, 17:26  [ТС]     Для последовательности составить программу печати n-го элемента #11
Ребят, я ее написал. Посмотрите, правильно ли я составил логику??

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 <math.h>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    cout << "Евгений Волков\n";
    
    double a, c, n, Sum;
    int b, chisl;
    a = 1;
    c = 0;
    Sum = 0;
    
    Sum = a;
    cout << "a1 = " << Sum << endl;
    for(n = 1; n <= 4; n++) {
        Sum = n * Sum + 1 / n;
        chisl = Sum * n;
        cout << "a" << n + 1 << " = " << Sum << " = " << endl << " " << chisl << endl;
        cout << "=-";
        for(b = 0; chisl/10 != 0; b++) {
            b = chisl%10;
            chisl = chisl / 10;
            cout << "-";
        }
        cout << endl;
        cout << " " << n << endl << endl;
    }
 
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2015, 10:59     Для последовательности составить программу печати n-го элемента
Еще ссылки по теме:

C++ Составить программу для нахождения номера максимального элемента массива
Составить программу печати n-го элемента в виде обыкновенной несократимой дроби C++
Использование стека для печати строки в обратной последовательности C++

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

Или воспользуйтесь поиском по форуму:
Леонтий_Бурдыл
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 2
11.05.2015, 10:59     Для последовательности составить программу печати n-го элемента #12
а можете сделать эту задачу в паскале через функцию?
Yandex
Объявления
11.05.2015, 10:59     Для последовательности составить программу печати n-го элемента
Ответ Создать тему
Опции темы

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