Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Пример 6.4. Дана матрица A(N, N). Если хотя бы один элемент строки матрицы




Отрицателен, то все элементы этой строки заменить нулями.

Тест

Данные Результат
N Матрица А Матрица А
 

Алгоритмический язык

(в этом алгоритме отражены процессы ввода исходных данных и вывода результатов)

алг Модификация(арг цел N, арг рез вещ таб A[1:N,1:N])

дано | N>0

надо | элементы строк, содержащих отрицательные числа, заменены на нули

нач цел i, j, лит Flag

ввод N Блок-схема (фрагмент)

нц для i от 1 до N

нц для j от 1 до N

ввод A[i,j]

Кц

Кц

нц для i от 1 до N | цикл по строкам

j:= 1; Flag:= "Нет"

нц пока (j<=N) и (Flag ="Нет") |цикл до первого отрицат. элемента строки

если A[i, j]<0 то Flag:= "Да"

иначе j:=j+1

Все

Кц

если Flag = "Да" |обнуление строки

то нц для j от 1 до N

A[i, j]:=0

Кц

Все

Кц

нц для i от 1 до N

нц для j от 1 до N

вывод A[i,j]

Кц

Кц

Кон

Исполнение алгоритма

Обозначение проверяемого условия:

(j<=N) и (Flag = "Нет")=> (1)

i Flag j (1) A[i,j]<0 Flag="Да" A[i,j]
  "Нет" "Да"   + + -(кц) - + +   A[1,1]=0 A[1,2]=0 A[1,3]=0
  "Нет"   + + + -(кц) - - - -  
  "Нет" "Да"   + -(кц) + + A[3,1]=0 A[3,2]=0 A[3,3]=0

Turbo Pascal

Program Modify;

Uses Crt;

Var A: Array[1..10, 1..10] of Real;

N, i, j: Integer;

{-------------------------------------}

Procedure InputOutput; {описание процедуры ввода-вывода матрицы}

Begin ClrScr;

Write(’Количество строк и столбцов – ’); ReadLn(N);

For i:= 1 to N do

For j:= 1 to N do

begin Write(’A[’, i, ’, ’, j, ’] = ’);

ReadLn(A[i, j]);

end; ClrScr;

WriteLn(’ Исходная матрица:’); WriteLn;

For i:= 1 to N do

begin

For j:= 1 to N do Write(A[i, j]: 5: 1);

WriteLn;

end; WriteLn;

End; { of InputOutput }

{-------------------------------------------}

Procedure Line(Var i: Integer); {описание процедуры обработки}

Var Flag: Boolean; {строки матрицы }

Begin

j:= 1; Flag:= FALSE;

While (j<=N) and not Flag do {цикл до первого отрицательного элемента строки }

If A[i, j]<0 then Flag:=TRUE else j:=j+1;

If Flag then {обнуление строки, содержашей отрицательные элементы }

For j:= 1 to N do A[i, j]:= 0;

End;

{-------------------------------------------}

Procedure OutRes; {описание процедуры вывода матрицы-результата}

Begin

WriteLn(’ Матрица-результат:’); WriteLn;

For i:= 1 to N do

begin

For j:= 1 to N do Write(A[i, j]:5:1);

WriteLn;

end; ReadLn;

End; { of OutRes }

{-------------------------------------------}

BEGIN

InputOutput; {вызов процедуры ввода-вывода матрицы}

For i:= 1 to N do Line(i);{циклический вызов процедуры обработки строк}

OutRes; {вызов процедуры вывода матрицы-результата}

END.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных