Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 21:51   #1
Graf_Leon
 
Регистрация: 18.05.2011
Сообщений: 3
Печаль Симметричная матрица задана верхним треугольником в виде одномерного массива.

Помогите решить задачу,Прошу пожалуйста

Симметричная матрица задана верхним треугольником в виде одномерного массива.
Найти квадрат этой матрицы без пересчета ее к квадратному виду.
Graf_Leon вне форума Ответить с цитированием
Старый 03.05.2013, 22:15   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

У Вас есть какие-нибудь наработки/идеи, как ее решать?

UPD
Решение на C++ (сможете подсмотреть формулы):
Код:
#include <iostream>
#include <cmath>

using namespace std;

int
get(int a[], int s, int row, int col)
{
    if (row > col) {
        int tmp = row;
        row = col;
        col = tmp;
    }
    return a[col - row + (s + s - row + 1) * row / 2];
}

int
main()
{
    int count;
    cin >> count;
    int n = (sqrt(8 * count + 1) - 1) / 2;
    int a[count];
    for (int i = 0; i < count; ++i) {
        cin >> a[i];
    }
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            int tmp = 0;
            for (int k = 0; k < n; ++k) {
                tmp += get(a, n, i, k) * get(a, n, k, j);
            }
            cout << tmp << " ";
        }
        cout << endl;
    }
}
Хотя я только сейчас воспользовался советом Вадима Мошева и записал получившуюся матрицу на бумаге. Есть одно интересное замечание по поводу получившейся матрицы (она обладает свойством, а вот каким, оставляю на откуп ТСу). Решение выше является решением "в лоб" (происходит пересчет координат в квадратной матрице в координаты в одномерном массиве).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.05.2013 в 22:42.
BDA на форуме Ответить с цитированием
Старый 03.05.2013, 22:24   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Дам рекомендации.
1. Хотелось бы определиться по поводу симметрии. Она относительно чего? какой диагонали? (хотя это не важно, имхо)
2. Сначала на бумаге запишите эту матрицу, обозначая элементы a1, a2, a3,..., an, после чего умножьте эту матрицу саму на себя, в результате чего у вас получится матрица, элементами которой будут суммы и произведения из элементов исходной матрицы, потом просто вычислите элементы новой матрицы по этим выражениям.
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ симметричная матрица Guzal Помощь студентам 8 06.02.2011 22:01
Задана исходная матрица playmakerl17 Помощь студентам 5 03.02.2011 22:59
матрица из одномерного массива hunter03 Помощь студентам 3 30.11.2010 22:34
матрица из одномерного массива hunter03 Паскаль, Turbo Pascal, PascalABC.NET 1 30.11.2010 20:59
Задана матрица R(N,M).Поменять местами 1-ю и п ЮРИЙ ЮРЫЧ Помощь студентам 0 23.12.2009 19:42