25.03.2012, 22:00 | #1 (permalink) |
Member
Регистрация: 21.06.2010
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача решена, только где-то ошибка
Program zadacha; Uses crt; const n = 3; m = 5; var Matr: Array[1..n, 1..m] of Integer; i, j,pro,sum,k: Byte; begin pro:=1; Randomize; writeln('Матрица: '); for i:=1 to n do begin for j:=1 to m do begin Matr[i, j]:=Random(20); write(Matr[i, j]:4); begin if Matr[i,j]>0 then pro:=pro*Matr[i,j] else if Matr[i,j]<0 then sum:=sum+abs(Matr[i,j]) else k:=k+1; end; writeln; end; writeln('proizv: ', pro); writeln('summa: ', sum); writeln('kol-vo: ', k); end; Readkey; end. Ошибка проверки диапазона 201 на 19 строке вроде Тоже компилятор глюченый??? |
25.03.2012, 22:00 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
В этих топиках может содержаться интересная информация для вас Это только начало модинга... Перекраска корпуса и не только.. Массив, почти решена задача |
25.03.2012, 22:24 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну, во всяком случае, на сей раз - не только. Есть ошибки.
Самая главная: произведение положительных элементов - это очень большое число, для которого может не хватить даже формата LongInt, а у Вас поставлен и вовсе Byte, т.е. число в диапазоне 0..255. Никуда не годится. Здесь лучше на всякий случай взять формат Real. Есть несколько не то, чтобы ошибок, а, скорее, неряшливостей: 1. Раз уж требуется работать со всеми тремя видами чисел, включая отрицательные, так нужно, чтобы они тоже генерились. 2. В этом фрагменте begin if Matr[i,j]>0 then pro:=pro*Matr[i,j] else if Matr[i,j]<0 then sum:=sum+abs(Matr[i,j]) else k:=k+1; end; операторные скобки begin-end ни к селу, ни к городу, т.е. они просто абсолютно лишние. Ну вроде так всё. Исправленный вариант: Код:
Uses crt; const n = 3; m = 5; var Matr: Array[1..n, 1..m] of Integer; i,j,k:Byte; sum:Longint; pro:real; begin pro:=1; Randomize; writeln('Матрица: '); for i:=1 to n do begin for j:=1 to m do begin Matr[i,j]:=10-Random(20); write(Matr[i, j]:4); if Matr[i,j]>0 then pro:=pro*Matr[i,j] else if Matr[i,j]<0 then sum:=sum+abs(Matr[i,j]) else k:=k+1; end; writeln; end; writeln('proizv: ', pro); writeln('summa: ', sum); writeln('kol-vo: ', k); Readkey; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|