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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Immes
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 13
#1

Рекурсия - C++

17.06.2009, 22:48. Просмотров 1225. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, с рекурсией.
Дана квадратная матрица A порядка m, натуральное число n, действительные числа pn, pn-1, p0. Найти pn*A^n+pn-1*A^(n-1)+...+p1*A+p0*E. E-единичная матрица порядка m.
Я попыталась что-то написать. Но считает неправильно, и вsdjlbn в ответе либо нули, либо какие-то непонятные числа...

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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "locale.h"
const int N=100;
 
void func(int n, int m,int A[N][N], int E[N][N], float p[N])
{
    static int k,i,j;
    static float itog[N][N],g[N][N],h[N][N];
    if(k==n) 
    {
        printf("Результат:\n");
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            printf("%6.2f", itog[i][j]);
            printf("\n");
        }
    }
    else
    {    
        if(k==0)
        {
            k++;
        }
        else
        {
            if (k==1)
            {
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    g[i][j]=p[k-1]*A[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    h[i][j]=p[k]*E[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                        itog[i][j]=g[i][j]+h[i][j];
                k++;
            }
            else 
            {
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    g[i][j]=itog[i][j]*A[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    h[i][j]=p[k]*E[i][j];
                k++;
            }
        }
        func(n,m,A,E,p);
    }
}
int main()
{ 
    setlocale(LC_ALL,"Russian");
    unsigned int m, n, i, j;
    int E[N][N], A[N][N];
    float p[N];
 
    printf("Введите размерность матрицы А[m][m](от 1 до %d):",N);
    scanf("%d",&m);
    printf("\nВведите элементы матрицы А[m][m]:\n");
    for (i=0; i<m; i++)
        for (j=0; j<m; j++)
        {
            printf("A[%d][%d]=",i,j);
            scanf("%d",&A[i][j]);
        }
    printf("\nВведите n(от 1 до %d):",N);
    scanf("%d",&n);
    printf("\nВведите элементы p n, p n-1, ..., p 0:\n");
    for (i=0; i<=n; i++)
    {
        printf("p%d=",n-i);
        scanf("%f",&p[n]);
    }
 
    for(i;i<m;i++)
    {
        for(j;j<m;j++)
            if(i == j)
            {
                E[i][j]=1;
            }
            else
            {
                E[i][j]=0;
            }
         }
    printf("\n\n");
    func(n,m,A,E,p);
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2009, 22:48     Рекурсия
Посмотрите здесь:

Рекурсия - C++
Разработать рекурсивную функцию не возврашающую значений: Дано натуральное четное число n. Разработать функцию для вывода на экран...

Рекурсия - C++
Помогите пожалуйста как это можно написать. Y=(2*n+1)!!*(2*m+1)!!/(2*(m+n)+1)!!,где m,n неотрицательные целые числа.Для определения...

РЕкурсия - C++
Мне нужно 5 задач по рекурсии с решениями,)))есмли не сложно-помогите, может ссылочку куда или что-нибудь)))заранее благодарен

Рекурсия - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iostream&gt; int main() { int mass = {0}, ...

Рекурсия - C++
Как переделать программу в рекурсию? char S='S', T='T', M={NULL}; int ST=5,i=0,j=0; int TS; void Per() { M=S; ...

Рекурсия - C++
Есть задача, написал решение но ответ неправильный. Задача: Решение: #include &lt;iostream&gt; using namespace std; int a, n, m, t,...

Рекурсия - C++
Вот какой самый простой пример рекурсии я обнаружил в интернете: #include &lt;iostream&gt; using namespace std; int factorial(int n) { ...

Рекурсия - C++
Помогите написать функцию которая будет считать эту рекуррентную формулу с помощью рекурсии

Рекурсия - C++
Сделайте одну програмку используя рекурсию. Очень нужно... Срочно. 1. Реализовать поиск НОД; 2. Возвести число в целую степень; ...

Рекурсия - C++
Не понимаю каков будет порядок действий в функции допустим когда(level =2). По тому как я понял работает рекурсия, когда начнется алгоритм...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 23:23     Рекурсия #2
А что это означает: "+...+" ?

Не по теме:

Стыдно спрашивать, но...

Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,636
Записей в блоге: 26
17.06.2009, 23:44     Рекурсия #3
И что такое A^n
Immes
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 13
18.06.2009, 09:04  [ТС]     Рекурсия #4
+...+-это значит что между pn*A^n+pn-1*A^(n-1) и p1*A+p0*E есть ещё сколько-то элементов.
A^n-это матрица в степени n.
И считать надо по формуле. Например, если n=3, то ((p3+A+p2*E)*A+p1*E)*A+p0*E.
Yandex
Объявления
18.06.2009, 09:04     Рекурсия
Ответ Создать тему
Опции темы

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