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

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

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

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

17.06.2009, 22:48. Просмотров 1238. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2009, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия (C++):

Рекурсия - C++
Здравствуйте, писали на лабораторной программу с использованием рекурсии, о бъясните почему в ответе двойки выдает?? и что рекурсивная...

Рекурсия - C++
Помогите пожалуйста составить программу, с помощью рекурсии: Определить значение отношения максимального и минимального из...

рекурсия на с - C++
разработать рекурсивную функцию для вычитания двух подлинных двоичных чисел, заданных в виде символьных строк. разрядность цифр может быть...

Рекурсия - C++
Всем доброго времени суток! Прошу Вашей помощи! Задание такого: Вычислить, используя рекурсию, выражение: //и вот собственно...

Рекурсия - C++
Привет, помогите пожалуйста надо вычислить рекурсивную функцию : (x+a(x+(a-1)(x+(a-2)(x+...2(x+1)^2)^2)^2)^2)^2. Помогите пожалуйста ,...

Рекурсия - C++
Задан массив целых чисел: а0, а1 ..., аn-1. Известно, что один из элементов массива принимает нулевое значение. Найти номер данного...

3
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 23:23 #2
А что это означает: "+...+" ?

Не по теме:

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

0
Evg
Эксперт CАвтор FAQ
17950 / 6181 / 413
Регистрация: 30.03.2009
Сообщений: 16,970
Записей в блоге: 27
17.06.2009, 23:44 #3
И что такое A^n
0
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.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2009, 09:04
Привет! Вот еще темы с ответами:

рекурсия - C++
Сделать рекурсию, кроме факториала!

Рекурсия - C++
Вопрос не по коду. Вот есть у меня рекурсивная функция, глубина рекурсии достигает 10 в среднем. Эта функция вызывается огромное (порядка...

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

рекурсия - C++
Доброго времени суток. Уважаемые ГУРУ, есть одна проблема. Ниже представлен код, в котором параметр b должен быть всегда...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
18.06.2009, 09:04
Ответ Создать тему
Опции темы

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