lesena
Новичок
|
Помогите плиз. Срочно!!! Формулировка условия задачи а) В матрице А поменять местами два столбца с заданными номерами б) сформировать из элементов полученной матрицы, которые определяются как суммы элементов ее столбцов, диагональную матрицу С; в) если среди элементов главной диагонали С есть равные, найти ее след, в противном случае вычесть из С единичную матрицу.
Code Sample:
Program matrix_test(input, output); const n = 4; (максимальное число строк и столбцов) type mx = array[1 .. n, 1 .. n] of integer; procedure sub_E(var res: mx); var i, j: integer; begin for i := 1 to n do for j := 1 to n do if i = j then dec(res[i, j]) end; procedure swap_rows(var res: mx; first, second: integer); (*процедура замены столбцов*) var i, X: integer; begin for i := 1 to n do begin X := res[i, first]; res[i, first] := res[i, second]; res[i, second] := X end; end; procedure make_diag(var res: mx; a: mx); (*сумма элементов столбцов и получение диагональной матрицы*) var i, j, s: integer; begin for i :=1 to n do for j :=1 to n do res[i, j] := 0; for i := 1 to n do begin s := 0; for j :=1 to n do s := s + a[j, i]; res[i, i] := s; end; end; procedure enter(var res: mx); var i, j: integer; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); begin for i = 1 to n do begin for j :=1 to n do read(res[i, j]); { } readln; end; end; end; procedure print(res: mx); var i, j: integer; begin writeln; for i :=1 to n do begin for j :=1 to n do write(res[i, j]:5); writeln; end; end; function has_dup(a: mx): boolean; (*проверка выполнения условия:есть ли среди элементов диагонали равные*) var i, j: integer; begin has_dup := false; (*если равных элементов нет, то значение каждого элемента дигонали уменьшается на единицу*) for i :=1 to n - 1 do for j :=i + 1 to n do if a[i, i] = a[j, j] then has_dup := true; end; function spur(a: mx): integer; (*сумма элементов на главной диагонали(след)*) var i, s: integer; begin s := 0; for i := 1 to n do s := s + a[i, i]; spur := s; end; var a, c: mx; begin enter(a); print(a); swap_rows(a, 1, 3); print(a); make_diag(c, a); print(c); if has_duap(c) then writeln('Sp(C) =', spur(c)) else begin sub_E(c); print(c); close(output); close(input); end; end.
|
Всего сообщений: 3 | Присоединился: ноябрь 2010 | Отправлено: 14 апр. 2006 22:36 | IP
|
|
miss_graffiti
Долгожитель
|
а в чем проблема - то?
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 апр. 2006 10:48 | IP
|
|
lesena
Новичок
|
проблема, что я не понимаю этих всяких типов блоков. а надо графически нарисовать алгоритм
|
Всего сообщений: 3 | Присоединился: ноябрь 2010 | Отправлено: 15 апр. 2006 10:55 | IP
|
|
KMA
Долгожитель
|
Хехе, это штука простая, надо заменять все команды на блок-схемки, вот и все, тебе нарисовать как это делается на одном из примеров, а ты потом разберешься? Или просто привести стандартные блок-схемы
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 15 апр. 2006 12:05 | IP
|
|
miss_graffiti
Долгожитель
|
построчно смотришь. прямоуг. со скругл. углами - начало и конец. в них ничего не пишут. ромбик - условие. от него идет 2 ветки. прямоугольник - любые действия. параллелограмм - ввод/вывод. вытянутый шестиугольник - цикл. вроде все...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 апр. 2006 16:09 | IP
|
|
VF
Administrator
|
Для достаточно больших программ обычно строят блок-схему не всех операторов, а общей логики работы. Т.е. в одном блоке описывается алгоритм, который реализуется несколькими операторами. Ссылки, которые могут пригодится: внешняя ссылка удалена внешняя ссылка удалена
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 15 апр. 2006 19:27 | IP
|
|
lesena
Новичок
|
всем большое ПАСИБА. разобралась)))
|
Всего сообщений: 3 | Присоединился: ноябрь 2010 | Отправлено: 16 апр. 2006 12:45 | IP
|
|
Guest
Новичок
|
еще одни редактор с автоматическим построением схемы по коду.. fceditor.ru
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 25 авг. 2006 13:28 | IP
|
|
Guest
Новичок
|
FCEditor как раз и предназначен для "лабораторных" программ, в которых нету наворотов типа ООП и STL.. отличается тем что сам определяет размеры всех блоков под текст и выглядит все это дело более менее по ГОСТ. правда без регистрации ($5) сохранить картинку схемы невозможно.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 30 авг. 2006 9:01 | IP
|
|
VF
Administrator
|
Попробовал внешняя ссылка удалена - редактор блок-схем с лицензией GPL. Долго разбираться не пришлось, нарисовал все что нужно. Работает под Linux и Windows.
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 30 сен. 2010 23:48 | IP
|
|
|