![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 15.11.2009
Сообщений: 6
|
![]()
Условие задачи:
1) Посчитать сумму элементов в тех строках, которые не содержат отрицательных элементов. (есть и дальнейшие пункты, но меня интересует этот.) Убедительная просьба, не переписывайте функции заново, помогите разобраться, где ошиблась, пожалуйста. Ошибки: При выборе заполнения случайными числами, все проходит нормально, однако при выборе печати матрицы на экран выводятся нули, как исправить. И, собственно, проблемы с суммой (пункт 4 меню). Если есть вопросы, помогу разобраться. Спасибо. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 15.11.2009
Сообщений: 6
|
![]()
сам код:
const space = ' '; n = 3; type TMatrix = array [1..n, 1..n] of integer; var item, k, res: integer; Matr: TMatrix; /////////////////////////////////////////////////////////////////////////////// /// Ввод матрицы procedure Input_Matr (var Matr: TMatrix); var i, j: integer; begin writeln('Введите матрицу размерности ',n,' на ', n, ': '); for i := 1 to n do for j := 1 to n do read(Matr[i, j]); readln; writeln(#10,'Ввод завершен.'); end; /////////////////////////////////////////////////////////////////////////////// /// Заполнение матрицы случайными числами procedure Input_Random(var Matr: TMatrix); var ch: char; i, j: integer; begin write('Подтверждаете автоматический ввод элементов? (Y/N) -> '); readln(ch); if ch in ['Y','y','Н','н'] then begin randomize; for i := 1 to n do for j := 1 to n do Matr[i, j] := random(21)-20; end; writeln(#10,'Ввод успешно завершен', #10); end; //////////////////////////////////////////////////////////////////////////////// /// Печать матрицы procedure Print_Matr(Matr: TMatrix); var i, j: integer; begin writeln; for i := 1 to n do for j := 1 to n do begin write(Matr[i, j], space); if j = n then writeln; end; end; //////////////////////////////////////////////////////////////////////////////// /// Проверка, есть ли в строке отрицательные элементы. Есть - ложь, нет - истина function No_Negatives(Matr: TMatrix; k: integer): boolean; var i: integer; OK: boolean; begin i := k; OK := true; while (i <= n) and OK do if Matr[k, i] < 0 then OK := false else inc(i); No_Negatives := OK end; /////////////////////////////////////////////////////////////////////////////// /// Сумма элементов в заданной строке, в которой нет отрицательных элементов function Sum_El(Matr: TMatrix; k: integer): integer; var i: integer; begin result := 0; if No_Negatives(Matr,k) then begin for i := k to n do result := result + Matr[k,i] end else result := 0; Sum_El := result end; /////////////////////////////////////////////////////////////////////////////// /// Вывод меню на экран function Menu: byte; const MaxItem = 5; begin writeln(#10,'Выберите какой-либо пункт меню:'); writeln(#10,'1 - Ввести новую матрицу;'); writeln('2 - Заполнить матрицу случайными числами;'); writeln('3 - Просмотреть текущую матрицу;'); writeln('4 - Сумма элементов в строках, не содерж. отрицательных элементов;'); writeln('5 - Минимум среди сумм элементов диагоналей,'); writeln(' параллельных главной диагонали;'); writeln('0 - Выход;'); write(#10,'Ваш выбор: -> '); repeat readln(result); until result in [0..MaxItem]; menu := result end; //////////////////////////////////////////////////////////////////////////////// begin{main} SetConsoleCP(1251); SetConsoleOutputCP(1251); repeat item := menu; case item of 1: Input_Matr(Matr); 2: Input_Random(Matr); 3: Print_Matr(Matr); 4: begin for k := 1 to n do begin res := Sum_El(Matr, k); if res <> 0 then writeln(#10,'Строка - ',k,', сумма элементов в ней = ',res); end; end; end; until item = 0; end. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 08.04.2010
Сообщений: 2
|
![]()
У вас в условии написано что сложить те строки где нет отрицательных но у вас везде стоят Integer-ы он отрицательные значения не держит.. а что касается ввода, процедуры все верные, но может быть программа запуталась в выходных параметрах у вас Matr является и глобальным и локальным для всех процедур..могу ошибаться
|
![]() |
![]() |
![]() |
#4 | ||
Форумчанин
Регистрация: 12.04.2010
Сообщений: 134
|
![]()
исправьте тут
Код:
если Matr -глобальная переменная уберите ее из вызова процедур, т.е например Код:
в Код:
Цитата:
да и еще Цитата:
функция Код:
Код:
кому нужна помощь! жду в аське и скайпе!
Последний раз редактировалось Филантроп; 16.04.2010 в 16:32. |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрицы в паскале | CergWP | Помощь студентам | 1 | 08.04.2010 07:38 |
Матрицы в паскале | gx5rmsu8x | Помощь студентам | 1 | 30.01.2010 17:16 |
Матрицы в паскале | Мария0703 | Помощь студентам | 8 | 06.05.2009 10:27 |
Где ошибка? | [Smarik] | Общие вопросы Delphi | 5 | 01.04.2008 09:56 |