Выкладываю свою третью лабораторную работу по программированию. Мне уже не нужна. А кому-нибудь может пригодится.
Цель работы:
Получение практических навыков по отладке Паскаль-программ, в которых используются одномерные и двумерные массивы.
Задание:
— исправить ошибки в программе TEST3B.
— проанализировать программу TEST3A.
— составить программу, производящую замену определённых элементов массива на нули.
Текст программы TEST3B:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
program Test3B; const N=5; var I,L: 1..N; C: integer; A,B: array [i..N, 1..N] of real; begin for I:=1 to N do begin for J:=1 to M do read (A(I,J)); readln; end; I := 1; while I<=N do begin J := 1 while J<=N do begin if I=J if I=J then B[I,J] := A[I,J] else B[I,J] := 0 J := J+1 end; I := I+1 end; B[6,6] := A[0]; C := A; for I:=1 to N do begin for J:=1 to N do write (A[I,J]:7:1); writeln; end; writeln (B,C) end. |
При компиляции программы были получены следующие сообщения об ошибках:
- Error in type
- Unknown identifier
- Cannot read and write variables of this type
- “;” expected
- “then” expected
- constant out of range.
После исправления ошибок текст программы приобретает следующий вид:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
program Test3B; const N=5; var I,J: 1..N; C: integer; A,B: array [1..N, 1..N] of real; begin for I:=1 to N do begin for J:=1 to N do read (A[I,J]); readln; end; I := 1; while I<=N do begin J := 1 ; while J<=N do begin if I=J THEN if I=J then B[I,J] := A[I,J] else B[I,J] := 0 ; J := J+1 end; I := I+1 end; B[5,5] := A[1,1]; C := round(A[1,1]); for I:=1 to N do begin for J:=1 to N do write (A[I,J]:7:1); writeln; end; for I:=1 to N do begin for J:=1 to N do write (B[I,J]:7:1); writeln; end; writeln (C); end. |
Текст программы TEST3A:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
program Test3A; var I,J: integer; C: char; A: array [1..9] of char; begin A := 'Example 2'; writeln; write(' Init Stroka=', ''''); for J:=1 to 9 do write (A[j]); writeln(''''); I := 0; while I<>9 do begin writeln; write(' Nom.sim='); readln(I); writeln(' I=',I); write(' Value='); readln(C); writeln(' C=[',C,']'); A[I]:=C; write(' Change Stroka=', ''''); for J:=1 to 9 do write (A[j]); writeln('''') end end. |
При подаче данных: 302E1RO 7.58 10M одной строкой будет выведено сообщение: “invalid numeric format”. Система не может работать с таким числом. Если же ввести эти данные, нажимая после каждого символа ENTER, после ввода последнего символа будет выведено то же сообщение.
Индивидуальное задание
Вариант 9.
Дана матрица размером 5х5, значения ее элементов выбираются студентом самостоятельно путем ввода с клавиатуpы. Необходимо по этой матрице А фомировать другую матрицу В размером 5х5 согласно номеру задания (рис.
4), в которой элементы, отмеченные знаком «V», равны соответствующим элементам исходной матрицы А, а остальные элементы равны нулю. Предусмотреть ввод исходной матрицы А, ее контрольный вывод, пеpесылку ее в матpицу В, обработку и вывод результирующей матрицы В. Цикл обработки реализовать с помощью оператора цикла с параметром.
1 2 3 4 5 6 7 |
┌───────────┐ │ │ │ v │ │ v v │ │ v v v │ │ v v v v │ └───────────┘ |
Для создания программы была разработана ГСА:
Текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
Program lab3; uses crt; var a,b:array[1..5,1..5] of integer; n,m:integer; begin clrscr; window(27,5,60,40); Textcolor(14); for n:=1 to 5 do begin for m:=1 to 5 do begin Write('Enter element ',n,', ',m, ': ');readln(a[n,m]); end; end; Textcolor(2); Writeln('Matrix A:');; Textcolor(14); for n:=1 to 5 do begin for m:=1 to 5 do begin Write(a[n,m]:5); end; writeln; end; Textcolor(2); Writeln('Working...'); Textcolor(14); for n:=2 to 5 do begin for m:=7-n to 5 do begin b[n,m]:=a[n,m]; end; end; Textcolor(2); Writeln('Result (Matrix B):');Textcolor(14); for n:=1 to 5 do begin for m:=1 to 5 do begin Write(b[n,m]:5); end; writeln; end; readln; end. |
Результаты работы программы:
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 1
1 1 1 1 0 0 0 1 1
1 1 1 1 0 0 1 1 1
1 1 1 1 0 1 1 1 1
Результат.
- Проанализирована программа TEST3A.
- Приведена в рабочее состояние программа TEST3B, произведён анализ ошибок.
- Составлена программа, заменяющая определённые элементы матрицы на нули.
Выводы: Мы изучили массивы языка Паскаль, получили практические навыки работы с ними.