Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Создание блок-схем
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Одна страница
Модераторы: paradise, KMA
  

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



Долгожитель

Хехе, это штука простая, надо заменять все команды на блок-схемки, вот и все, тебе нарисовать как это делается на одном из примеров, а ты потом разберешься? Или просто привести стандартные блок-схемы

-----
Gentoo, FreeBSD 7.2, PHP, JavaScript (jQuery), Python, Shell
Помогаю с задачами только на форуме.
Все мои действия четко согласуются с правилами раздела. Поэтому никаких претензий и обид.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 15 апр. 2006 12:05 | IP
miss_graffiti


Долгожитель

построчно смотришь.
прямоуг. со скругл. углами - начало и конец. в них ничего не пишут.
ромбик - условие. от него идет 2 ветки.
прямоугольник - любые действия.
параллелограмм - ввод/вывод.
вытянутый шестиугольник - цикл.

вроде все...

Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 апр. 2006 16:09 | IP
VF



Administrator

Для достаточно больших программ обычно строят блок-схему не всех операторов, а общей логики работы. Т.е. в одном блоке описывается алгоритм, который реализуется несколькими операторами.

Ссылки, которые могут пригодится:
Бесплатный редактор блок-схем
Автоматическое создание блок-схем из программ на Паскале!

Всего сообщений: 3109 | Присоединился: май 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

Попробовал Dia - редактор блок-схем с лицензией GPL. Долго разбираться не пришлось, нарисовал все что нужно. Работает под Linux и Windows.

Всего сообщений: 3109 | Присоединился: май 2002 | Отправлено: 30 сен. 2010 23:48 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Одна страница

Форум работает на скрипте © Ikonboard.com