![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Guest |
![]()
Сообщение
#1
|
Гость ![]() |
Пожалуйста помогите переделать данную программу в 4 новых проги :molitva:
А именно, нужно: 1. Использовать процедуры с параметрами. 2. Использовать процедуры без параметров. 3. Использовать функции с параметрами. 4. Использовать функции без параметров. Во всех четырёх прогах, необходимо использовать не менее трёх параметров. Суть проги должна остаться той же. Код uses crt; const max_n = 9; var a,b:array[1..max_n,1..max_n] of integer; i,j,n1,n2,error:integer; s: string; x: longint; er: integer; label e1; begin clrscr; gotoxy (3,10); writeln ('Данная программа задаёт матрицу А. После чего создаёт'); gotoxy (57,10); writeln ('новую матрицу B, где '); gotoxy (12,11); writeln ('а) B(i,j) = A(i,j), если A(i,j) > 0'); gotoxy (12,12); writeln ('б) B(i,j) не равно 0, если A(i,j) <= 0'); gotoxy (7,14); writeln ('Элементами матрицы могут быть только целые числа от -32768 до 32767,'); gotoxy (18,15); writeln ('максимальный размер матрицы 9х9!'); gotoxy (18,20); writeln ('Нажмите любую клавишу для продолжения'); readkey; e1: clrscr; repeat write('Введите кол-во строк = '); {$I-} readln(n1); error:=ioresult;{$I+} IF (n1<2) or (n1>max_n) or (error<>0) then writeln ('Кол-во строк от 2 до 9!'); until (n1 >= 2) and (n1<=max_n) and (error=0); repeat write('Введите кол-во столбцов = '); {$I-} readln(n2); error:=ioresult;{$I+} IF (n2<2) or (n2>max_n) or (error<>0) then writeln ('Кол-во столбцов от 2 до 9!'); until (n2 >= 2) and (n2<=max_n) and (error=0); for i := 1 to n1 do for j := 1 to n2 do begin repeat write('a[', i, ',', j, '] = '); Readln(s); val(s, x, er); if (er<>0) or (x < -32768) or (x > maxint) then writeln('Введённый вами символ вне диапозона от -32768 до 32767'); until (x>=-32768) and (x<=maxint) and (er=0); a[i,j] := x; end; for i := 1 to n1 do for j := 1 to n2 do begin if a[i,j] > 0 then b[i,j] := a[i,j] else b[i,j] := 0; end; clrscr; write('Матрица A'); for i := 1 to n1 do begin writeln; for j := 1 to n2 do Write(a[i,j]:7); end; writeln; write('Матрица B'); for i := 1 to n1 do begin writeln; for j := 1 to n2 do Write(b[i,j]:7); end; writeln (''); write('Вы хотите сделать ещё одну матрицу? y/n'); case readkey of #89: goto e1; #121: goto e1; #78: exit; #110: exit; end; end. Пожалуйста помогите. Добавлено Поправка: НЕ "Во всех четырёх прогах, необходимо использовать не менее трёх параметров." А Только в двух прогах, необходимо использовать не менее трёх параметров. В 1 и 3=) |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
У меня наверное глюки... В прошлый раз это был не Guest а ghost... http://forum.pascalnet.ru/index.php?showt...indpost&p=31093
Ничего не напоминает? |
Guest |
![]()
Сообщение
#3
|
Гость ![]() |
:D Нет у тебя не глюки, я ghost. Дело в том, что тогда я свой пароль помнил, а щас нет. Запрос на восстановление забытого пароля я сделал, но писмецо пока что не пришло (уже как 2 часа его нет).
Кстати я и мыло то не помню, которе тут оставлял при реге (если оставлял ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Значит, смотри... Предложения пока такие:
1. Вместо конструкций вида Код gotoxy(x, y); writeln(str); описываешь процедуру (как раз с тремя параметрами) Код Procedure PrintStr(x, y: byte; s: string); begin gotoxy(x, y); writeln(s); end; ... { и в основной программе: } PrintStr(3, 10, 'Данная программа задаёт матрицу А. После чего создаёт'); { и так далее... } 2. Делаешь процедуру (опять с тремя параметрами): Код type matrix = array[1..max_n,1..max_n] of integer;; procedure matrixOut(arr: matrix; sz_1, sz_2: integer); var i, j: integer; begin for i := 1 to sz_1 do begin writeln; for j := 1 to sz_2 do Write(arr[i, j]:7); end; end; ... { в основной программе - } write('Матрица A'); matrixOut(a, n1, n2); write('Матрица b'); matrixOut(b, n1, n2); |
-ghost- |
![]()
Сообщение
#5
|
Гость ![]() |
Всё здорого, только во втором варианте происходит ошибка. Ошибка не совпадения типов.
Код uses crt; const max_n = 9; var a,b:array[1..max_n,1..max_n] of integer; i,j,n1,n2,error:integer; s: string; x: longint; er: integer; type matrix = array[1..max_n,1..max_n] of integer; procedure matrixOut(arr: matrix; sz_1, sz_2: integer); var i, j: integer; begin for i := 1 to sz_1 do begin writeln; for j := 1 to sz_2 do Write(arr[i, j]:7); end; end; ... write('Матрица A'); matrixOut(a, n1, n2); {в этой строке происходит ошибка} writeln; write('Матрица B'); matrixOut(b, n1, n2); writeln (''); write('Вы хотите сделать ещё одну матрицу? y/n'); case readkey of #89: goto e1; #121: goto e1; #78: exit; #110: exit; end; end. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Я же написал:
Код type matrix = array[1..max_n,1..max_n] of integer; Так a и b объяви не так: Код var a,b:array[1..max_n,1..max_n] of integer; а вот так: Код var a,b:matrix; и ошибка исчезнет... :yes: |
Guest |
![]()
Сообщение
#7
|
Гость ![]() |
Спасиб, помогло=)
А с остальными тремя не поможете? |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Guest, а почему, собственно, с тремя? Что, нельзя в одной программе изменить одно, а во второй - другое?
Ну я бы еще описал функцию: Код Function GetColRow: Integer; Var x, error: integer; Begin repeat {$I-} readln(x); error:=ioresult;{$I+} IF (x<2) or (x>max_n) or (error<>0) then writeln ('Кол-во строк (столбцов) от 2 до 9!'); until (x >= 2) and (x<=max_n) and (error=0); GetColRow := x End; И вместо того, что есть сейчас, пользовался бы вот этим: Код ... write('Введите кол-во строк = '); n1 := GetColRow; write('Введите кол-во столбцов = '); n2 := GetColRow; Вот тебе функция без параметров... ;) |
Guest |
![]()
Сообщение
#9
|
Гость ![]() |
volvo, извиняюсь за первоначальную дэзинформацию.
Учитель в задание ввёл ещё пару требований, 1. чтобы процедура или ф-ия использовалась в проге минимум 2 раза. 2. чтобы использовынные параметры в проге изменялись. Вот тут например они не изменяюцца Код ... matrixOut(a, n1, n2); ... matrixOut(b, n1, n2); |
Гость |
![]()
Сообщение
#10
|
Гость ![]() |
kazqg vtne aguc tplcujsrk zuxc ibrxgyev mcjtq
|
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 8:12 |