TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]


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

Тест

 
Данные Результат
N Матрица А Матрица А
3
 
Демонстрация
Школьный АЯ
(в этом алгоритме отражены процессы  ввода  исходных данных и вывода результатов )
алг Модификация(арг цел 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]
1 "Нет"
"Да"
1
2
1
2
3
+
+
-(кц)
-
+
+
A[1,1]=0
A[1,2]=0
A[1,3]=0
2 "Нет" 1
2
3
4
+
+
+
-(кц)
-
-
-
-  
3 "Нет"
"Да"
1
1
2
3
+
-(кц)
+ + 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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz