|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2010, 10:46 | #1 |
Регистрация: 03.06.2010
Сообщений: 4
|
Квадратная матрица
Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам.
|
03.06.2010, 11:40 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Наработки есть?
I'm learning to live...
|
03.06.2010, 11:50 | #3 |
Форумчанин
Регистрация: 12.05.2010
Сообщений: 125
|
Для поиска количества строк=столбцам:
Код:
|
04.06.2010, 18:24 | #4 |
Пользователь
Регистрация: 22.01.2010
Сообщений: 37
|
квадратная матрица
Пусть задан одномерный массив В с числом элементов К. Надо доказать, что из К элементов можно создать верхнюю треугольную матрицу А. Заметьте, что в такой матрице на N-ой строке находится 1 элемент, на N-1 строке 2 элемента, N-2 строке 3 элемента и т.д. На 2 строке N-1 элемент, и на 1-ой строке N элементов. Очевидно, что кол-во элементов по строкам есть арифметическая прогрессия с первым членом а(1)=1 и разностью прогрессии d=1. Сумма членов арифметической прогрессии равна
S(n)=(a(1)+a(n))*n/2. a(n) - последний член арифм. прогрессии a(n)=a(1)+d*(n-1). Подставляя это варажение в выражение суммы, получим S(n)=(a(1)+a(1)+d*(n-1))*n/2. Подставляя значения а(1)=1, d=1, получим квадратное уравнение относительно n: n**2+n-2*S=0. Решив его, получим n. Отрицательные и дробные значения не удовлетворяют условиям задачи. Поэтому решением будет: N:=-0.5+sqrt(0.25+2*K); где K - кол-во элементов заданного массива. Решение задачи. # var K, N, m, i, j: integer; b: array[1..50] of integer; //Цифры могут быть другие a: array[1..10, 1..10] of integer; NN: real; begin K:= //кол-во элементов заданного одномерного массива. Элементы задайте сами b[1]:= b[2]:= .............. b[K]:= NN:=-0.5+sqrt(0.25+2*K); if Frac(NN)=0 then // если дробная часть равна 0 begin N:=trunc(NN); // обнуляем массив А for i:=1 to N do for j:=1 to N do a[i, j]:=0; m:=0; // восстанавливаем исходную матрицу for i:=1 to N do for j:=i to N do begin inc(m); a[i, j]:=b[m]; end; // вывод на печать for i:=1 to N do begin for j:=1 to N do write(a[i,j]:4); writeln; end; end else begin // выводим на печать что-то вроде "невозможно составить треугольную матрицу" end; end; # Надеюсь, программу составите сами. Последний раз редактировалось Fuadik; 05.06.2010 в 10:35. Причина: моя ошибка |
04.06.2010, 20:32 | #5 | |
Форумчанин
Регистрация: 30.04.2010
Сообщений: 317
|
Цитата:
Код:
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
|
|
04.06.2010, 20:32 | #6 | |
Форумчанин
Регистрация: 30.04.2010
Сообщений: 317
|
Цитата:
Код:
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
квадратная матрица | Ольга123456 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 24.05.2010 16:21 |
квадратная матрица на С++ | innaa639 | Помощь студентам | 1 | 24.03.2010 14:46 |
квадратная матрица | DartDayring | Общие вопросы C/C++ | 3 | 13.03.2010 13:36 |
Квадратная матрица | anna_ | Помощь студентам | 8 | 15.12.2009 21:16 |